【发布时间】:2013-12-02 09:51:37
【问题描述】:
我有一个自定义类的列表。自定义类包含许多字段。我想返回整个列表,但操作一些字段并返回所有其他字段不变。假设我的班级有 10 个字段:
这是我的尝试:
List<custom> data = somedatalist;
data.Select(a=> a.field1 = a.field1 * 6).Select(a => a.field10 = field10*7).tolist()
这不起作用,因为我没有在第一次选择中选择所有元素。
我能做到:
Select( a = > new Custom{....}).ToList();
但是我需要重写所有字段,如果我想保留其中大部分字段并且只操作 10 个字段中的 2 个字段,这似乎很麻烦。
下一次尝试:
List<custom> data = somedatalist;
data.ForEach(a=> a.field1 = a.field1 * 6 && a => a.field10 = field10*7).tolist()
也不行,不知道为什么。此外,如果我将“&&”替换为“,”,它也不起作用。
我将不胜感激其他建议:
Select( a = > new Custom{....}).ToList();
谢谢!
【问题讨论】:
-
manipulate some of the fields然后不要使用LINQ,而是使用循环。 -
很好,我想我可以在扩展方法中轻松做到这一点,但我处于 linq 模式...:)
-
好吧,据我了解,第一个选择过滤器仅适用于 field1,所以如果我执行第二个选择,则数据不再包含其余字段
-
LINQ 在您尝试更新原始列表时是一种查询语言。如果要将原件投影到另一种形式,则必须创建一个新对象。要么这样,要么修改原来的