在Linq中,使用WHERE时是否需要SELECT?

时间:2015-07-08 17:45:13

标签: c# linq

如果您有使用WHERE子句的Linq语句,例如:

var result = someCollection.Where(x => x.value > 5).Select(x => x);

是否需要SELECT,或者它是多余的?看来我可以安全地省略SELECT如果我没有试图获取对象属性,但我不确定这是否正确......

4 个答案:

答案 0 :(得分:4)

在您的情况下,不需要,因为您正在选择对象。所以你可以:

var result = someCollection.Where(x => x.value > 5);

就更好的做法而言,我会删除冗余代码。

但是,如果您要选择特定属性,那么这可能很有用,例如:

var result = someCollection.Where(x => x.value > 5)
                   .Select(x=> x.SomeSpecificProperty);

要添加的另一件事是,使用查询表达式,您将需要选择。

var result = from x in someCollection
             where x.Value > 5
             select x;

但是在编译时,上面的查询表达式将转换为方法表达式,没有Select

答案 1 :(得分:0)

这是多余的。 Select更像功能map(参见JavaScript,Haskell,Ruby)。如果您不打算将输入对象转换为与当前不同的形式,则无需使用Select

答案 2 :(得分:0)

  

在Linq中,使用WHERE时是否需要SELECT?

不,不是。

答案 3 :(得分:0)

不......这次没有必要......如果你想选择一个不同于“someCollection”的新对象,那将是必要的

类似的东西:

var result = someCollection.Where(x => x.value > 5).Select(x => new ObjName() { name = x.name, lastname = x.lastname });