2012-09-09 37 views
6

您好基于搜索条件建立一个LINQ语句的任何建议?有条件的地方在LINQ

我将传入一个'SearchCriteria'类的实例,其中所有参数都为空。

然后我想

if (sc.a != null) 
    // add to where 

if (sc.b != null) 
    // add to where 

的关键是这些被OR值不与运算。

任何提示?

对于奖励积分,我想在int上使用'contains'但我只能得到等于或不等于。

+0

“或” 是棘手的结合;做正确的事情,涉及表达树,通常是访问者/重写者。你有多少变数?只有两个?如果是这样,坦率地做到这一点(即3个不同的常规线 - 一个X,一个Y,一个X || Y) –

+0

什么ORM? LINQ to SQL或实体框架? – abatishchev

+0

它将潜在的十几个参数..我正在使用EF .... –

回答

4

尝试:

.Where(x => 
    (x.a != null ? x.a == a : false) && 
    (x.b != null ? x.b == b : false)); 

.Where(x => 
    (x.a != null && x.a == a) || 
    (x.b != null && x.b == b)); 

另外:

.Where(x => new int[] { 1, 2, 3 }.Contains(x.i)); 
+0

&&应该是|| ? –

+0

@Marc:或'':''操作符右手中的'false'。正确? – abatishchev

+0

这似乎是一个干净优雅的解决方案......我会看到它的规模。重新开始第二部分。我有一个整数OrderID为12345我希望能够搜索123并找到可以做的字符串123 * .Contains但你不能使用整数?这可以工作吗? –