Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ中的条件WHERE_C#_Linq_Entity Framework_Tsql_Linq To Entities - Fatal编程技术网

C# LINQ中的条件WHERE

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 ?

您好,您对基于搜索条件构建LINQ语句有什么建议吗

我将传入一个“SearchCriteria”类的实例,该类的所有参数都可以为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));