2009-09-24 3 views
0
IQueryable<SomeType> result = (from x in Context.XXX select x); 

теперь, что мне нужно сделать, это следующее (написанный псевдо-код, мне нужно фактический код):Как написать запрос LINQ, чтобы сделать это

foreach(var i in items) 
{ 
    // Where the object "i" has 2 properties 
    // 1) i.Operator (values of which can be AND or OR) 
    // 2) i.SomeID (values of which can be 1 .. 10) 

    // I need to build the LINQ query with "ands" and "ors" based on the i's in this foreach 
} 
+1

Как вы можете определить, каков объем каждого И и ИЛИ? вы просто хотите связать их (что может быть ошибочной логикой) –

ответ

0

Мы используем библиотеку динамического LINQ, чтобы выполнить то, что вы пытаетесь сделать (здесь: http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx)

Вы можете использовать что-то вроде:

var finalResults = results.Where("Your where clause"); 

где «Ваше предложение where» - это строка, содержащая ваше предложение с динамическим выражением where.

1

Наивный подход будет заключаться в цепи вызовов к методу Where, но таким образом вы можете достичь только поведения И

Ознакомьтесь с классом PredicateBuilder Джозефом Альбахари. Это позволяет создавать динамические запросы Linq с оператором ИЛИ

Смежные вопросы