Linq如果条件在where子句中

时间:2014-02-03 07:31:08

标签: linq

如何在where子句

中使用if条件
public static void IfCondition()
    {
        var number = 10;
        var result =from ans in number where if(number < 5 )select "false" else select "true"  ;
    }

我出错的地方请帮帮我。

3 个答案:

答案 0 :(得分:0)

  1. numberint,它不会实现IEnumerableIEnumerable<T>,因此您无法使用LINQ。

  2. 如果您有一个名为int的{​​{1}}集合,您可以执行以下操作:

    numbers

答案 1 :(得分:0)

您可以使用let clause来解决问题。

var number = 10;
var result =from ans in youNumbersCollection
        let trueFalse = (number < 5) ? "false" : "true"
        where yourColum = trueFalse;

答案 2 :(得分:0)

那段代码毫无意义。这不是LINQ的地方,LINQ用于查询数据列表。该代码应该简单:

var result = number < 5 ? "true" : "false"

'where'子句的内容是一个计算结果为bool的表达式,就像'if'语句的内容一样。如果您正在编写有效的LINQ查询,那么'where'子句可能是这样的:

where number < 5

此外,您混淆了过滤和投影。 'where'子句用于确定是否在处理中包含项目,而'select'子句是您处理它的位置。根据项目的值输出不同的结果是你在'select'子句中做的,而不是'where'子句,例如。

from item in list
where item.IsActive
select item.Number > 5 ? "true" : "false"

这将过滤掉IsActive为false的列表中的项目,并仅处理其中的项目。对于那些未过滤掉的项目,它会根据数字是否大于5输出“true”或“false”。