【发布时间】:2011-10-19 05:08:26
【问题描述】:
我是 Linq 的新手。
我想像这样在foreach 语句中设置两个值
我的实际代码是这样的
foreach (Employee emp in employees)
{
foreach(Department dept in emp.Departments)
{
dept.SomeProperty = null;
}
collection.AddRange(emp.Departments);
}
一点点重构就可以把上面变成这个
foreach (Employee emp in employees)
{
emp.Departments.ToList().ForEach(u => u.SomeProperty = null))
collection.AddRange(emp.Departments);
}
但我想要这样的东西
employees.ToList().Foreach(collection.AddRange(emp.Departments),
emp.Departments.ToList().ForEach(u => u.SomeProperty = null))
【问题讨论】:
-
不!不要将您的集合转换为列表只是为了调用该方法...使用您的循环。
-
改用 Linq 时也要考虑性能。与普通循环相比,LINQ 并不总是有用。
-
这样做,没有人可以再次阅读您的代码。自我混淆。
-
原代码清晰易懂;我看没必要改。请记住,代码的目的不仅仅是与 编译器 交流,而是与代码的未来读者交流;尽可能清楚。
-
@EricLippert 谢谢埃里克。如果我现在不习惯阅读所有 cmets,我会错过这个宝贵的建议。
标签: c# linq entity-framework