使用linq检查属性与多个可能的值之一。

问题描述 投票:0回答:2

使用linq检查属性与多个可能的值之一。在这种情况下,当状态为2或3时,是否可以不使用or运算符?可以不使用or操作符吗?

var x = (from b in books
         where b.statusCode.Contains(2, 3))
         select new ...
c# entity-framework linq linq-to-sql
2个回答
1
投票

你可以把值的列表设置成一个类似于 List<int>称为类似 ValueList然后在你的where行。

where ValueList.Contains(b.statusCode)

这样就可以比较出 statusCode 对照所有的列表值,并返回匹配的记录,这样你就得到了一个动态列表的好处,它可以用不同的值来重置,以返回其他状态码的集合。


1
投票

可以这样做(假设 statusCode 是 int)。

var values = new int[] { 2, 3 };

var x = (from b in books
     where values.Contains(b.statusCode))
     select new ...

或者你可以尝试这样内联。

    var x = (from b in books
     where (new int[] { 2, 3 }.Contains(b.statusCode)))
     select new ...
© www.soinside.com 2019 - 2024. All rights reserved.