C#修剪方法在动作内部不起作用

时间:2018-06-19 15:09:50

标签: c# delegates

我要修剪所有实体的某些属性。但是此entity.ForEach(x => x.PropertyName.Trim());似乎无效。执行该操作后,该属性中仍包含空白。那么有什么主意如何轻松做到这一点?

3 个答案:

答案 0 :(得分:0)

要么创建一个新的列表对象(y),然后使用修剪后的值重新创建对象列表。这是函数式编程。

entity.ForEach(x => y.Add(new entity{ PropertyName = x.PropertyName.Trim()}));

我以前在下面的代码中发布过-无法使用,因为实体列表对象是不可变的。我为这个错误表示歉意。(忽略下面的代码)

entity.ForEach(x => x.PropertyName = x.PropertyName.Trim());

答案 1 :(得分:0)

首先,您不应该使用.ForEach()方法,而应该使用foreach循环。其次,您遇到的实际问题是字符串是不可变的。当您调用.Trim()时,字符串本身未被修改,Trim()返回一个 new 字符串,因此您需要将其分配给以下内容:

foreach(var e in entity)
{
    e.PropertyName = e.PropertyName.Trim();
}

您可能还需要进行命名。 entity表示单数,您可以在其中清楚地看到它是某物的集合,因为我们对其进行了迭代。也许应该是entities

答案 2 :(得分:-1)

尝试一下

entity.ForEach(x => 
{
    x.PropertyName = x.PropertyName.Trim();
});

您从未分配从Trim()方法返回的新字符串值。

  

如果要删除所有空格

entity.ForEach(x => 
{
    x.PropertyName = x.PropertyName.Trim().Replace(" ", String.Empty);
});