2010-11-04 2 views
2

Привет У меня есть этот запрос LINQ:Dynamic, где в LINQ

var q = 
    (from vr in Util.db.ValuationsRequests 
    where vr.dtSubmitted != null 
    select vr 
    ).AsEnumerable<ValuationsRequest>(); 

Но я хочу, чтобы сделать поиск с более 3-х параметров: paramValuationId (INT), paramValue (булево), paramTitle (строка).

Что-то вроде:

if (paramTitle != string.empty) 
//add this field to the where 

Но если paramTitle пуста Я не хочу искать.

Каков правильный способ сделать это?

+0

Каковы соответствующие поля для сравнения ваших дополнительных параметров? – dotariel

ответ

5
string paramTitle = "hello"; 
var q = 
    (from vr in Util.db.ValuationsRequests 
    where vr.dtSubmitted != null 
     && (paramTitle == "" || vr.paramTitle == paramTitle) 
    select vr 
    ).AsEnumerable<ValuationsRequest>(); 
+1

В моем предложении у меня болят глаза. '&& (paramTitle ==" "|| vt.paramTitle == paramTitle)' пожалуйста! – fearofawhackplanet

+0

@fearofawhackplanet .... lol, извините за это ... ваше право, должно быть упрощено –

+0

Не будет paramTitle == "" потенциально может привести к тому, что какой-либо индекс в поле не будет использоваться? Разве не лучше было бы строить динамически в коде, а только выполнять SQL, который применяется? –

2
var q = 
(from vr in Util.db.ValuationsRequests 
where vr.dtSubmitted != null 
select vr 
).AsEnumerable<ValuationsRequest>(); 

if(!string.IsNullOrEmpty(paramTitle)) 
    q = q.Where(p => p.ParamTitle == paramTitle);