C# LINQ中的条件WHERE
您好,您对基于搜索条件构建LINQ语句有什么建议吗 我将传入一个“SearchCriteria”类的实例,该类的所有参数都可以为null 然后我想C# LINQ中的条件WHERE,c#,linq,entity-framework,tsql,linq-to-entities,C#,Linq,Entity Framework,Tsql,Linq To Entities,您好,您对基于搜索条件构建LINQ语句有什么建议吗 我将传入一个“SearchCriteria”类的实例,该类的所有参数都可以为null 然后我想 if (sc.a != null) // add to where if (sc.b != null) // add to where 关键的是这些都是要做的 有什么建议吗 对于积分,我想在整数上使用“contains”吗?但我只能得到相等或不相等的结果。试试: .Where(x => (x.a != null ?
if (sc.a != null)
// add to where
if (sc.b != null)
// add to where
关键的是这些都是要做的
有什么建议吗
对于积分,我想在整数上使用“contains”吗?但我只能得到相等或不相等的结果。试试:
.Where(x =>
(x.a != null ? x.a == a : false) &&
(x.b != null ? x.b == b : false));
或
此外:
“或”很难组合;要正确地完成这项工作,需要使用表达式树,并且通常需要访问者/重写器。你有多少个变量?就两个?如果是这样的话,坦率地说,要做得精疲力竭(即3条不同的规则线——一条X,一条Y,一条X | | Y)什么?LINQ到SQL或实体框架?可能有十几个参数。。我正在使用EF…这似乎是一个干净而优雅的解决方案。。。我来看看它的伸缩性如何。我们是第二部分。我有一个12345的整型OrderID,我希望能够搜索123,并用字符串查找123*。包含但不能用整型?这个能用吗?@john:你想用正则表达式还是通配符?实现这一目标有多种方法。我建议你搜索一下,或者问一个新问题,这很复杂。
.Where(x =>
(x.a != null && x.a == a) ||
(x.b != null && x.b == b));
.Where(x => new int[] { 1, 2, 3 }.Contains(x.i));