如何执行以下操作,根据linq方法中的条件分配新值,但保留所有结果。
int x= 100;
var results= from r in Results where r.id==id select r
{ if r.value==x set r.result="Found"}
答案 0 :(得分:2)
你并不是真的想要 - 理想情况下查询不应该有副作用。我的意思是你可以做:
var results = Results.Where(r => r.id == id)
.Select(r => {
if (r.value == x)
{
r.result = "Found";
}
return r;
};
我通常尽量不要......
请注意,此确实在LINQ to SQL等中不起作用。
答案 1 :(得分:2)
最好再做第二次通过,这样你就可以保持查询的清洁和无副作用。
int x = 100;
List<Result> results = (from r in Results
where r.id == id
select r).ToList();
results.ForEach(r => r.result = r.value == x ? "Found" : "Not Found");
答案 2 :(得分:1)
Linq不应该以这种方式使用。我会迭代查询的结果,然后更改它们。
var results= from r in Results where r.id==id select r;
foreach (var r in results.ToList()) { if (r.value==x) r.result="Found"; }