【问题标题】:Remove white spaces from properties in list of the objects? [duplicate]从对象列表中的属性中删除空格? [复制]
【发布时间】:2017-08-06 08:11:01
【问题描述】:

我有这个对象列表:

public class Location
{
    public string area { get; set; }
    public string sensorId { get; set; }
    public string address { get; set; }
}

List<Location> items = List<Location>(){
new Location(){area = "london ", address ="king road", sensorId ="2134"},
new Location(){area = "moscow",  address ="george str", sensorId ="2134"},
new Location(){area = "york ",   address ="johnson str ", sensorId ="2134"},
new Location(){area = " tokyo",  address ="king road 5", sensorId ="2134"},
new Location(){area = "paris",   address ="elitom road", sensorId ="2134"}
}

如何使用 linq 删除项目变量中的区域和地址属性中的空格?

【问题讨论】:

  • 为什么要使用 linq 来做呢?
  • 您要删除所有个空格吗?还是只是前导和尾随空格?也就是说,“王道”应该变成“王道”吗?还是你只是想把“东京”变成“东京”?

标签: c# linq


【解决方案1】:

部分使用 lynq 完成:

items = items.Select(x => new Location() { area = x.area.Trim(), address = x.address.Trim(), sensorId = x.sensorId }).ToList();

【讨论】:

  • 这只会删除开始和结束的空格,OP想要删除所有的空格
  • 他们也不想从sensorId中删除空格
  • @TheLethalCoder 你是正确的sensorId,但没有明确指定删除所有空格 - 根据我将其解释为修剪所需空格的问题
  • @cramopy 它说要删除空格。不是开头和结尾的空格。 是你需要特别指定的,如果那是你想要的行为。
【解决方案2】:

IMO Linq 不应该用于此,但如果您愿意,可以试试这个:

items = items.Select(item => {
    item.area = Regex.Replace(item.area, @"\s+", ""); // remove all white spaces
    item.address = Regex.Replace(item.address, @"\s+", ""); // remove all white spaces
    return item; // return processed item...
}).ToList(); // return as a List

【讨论】:

  • 为什么不应该使用 Linq?
  • @JimMischel 您没有将序列转换为新序列,而是在改变序列中的值。 LINQ 的设计初衷并非如此。它是专门为这样做而设计的。
  • @JimMischel 因为for/foreach 循环最终可能会更具可读性。显然这是固执己见。
  • @JimMischel 不,不是。它正在创建一个包含完全相同项目的新序列,但在创建新序列的过程中会改变这些项目。
  • 是的,我的错。我误读了代码。我认为他的代码与另一个答案相似,它不会改变项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
  • 1970-01-01
相关资源
最近更新 更多