Linq to SQL方法中的条件赋值

时间:2009-09-02 22:16:59

标签: linq

如何执行以下操作,根据linq方法中的条件分配新值,但保留所有结果。

 int x= 100;

 var results= from r in Results where r.id==id select r
              { if r.value==x set r.result="Found"}

3 个答案:

答案 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"; }