LINQ

2009-09-12 11 views
14

は、私はこの非常によく似たクエリがあります。LINQ

var result = from db.MyTable.Where(d => (double)d.Price >= minValue) 

を句がd.Proce >= minValueを持っているところ私が必要とし、 d.Price =< maxValue(T-SQL BETWEENのように)。

どうすればいいですか?これについて

答えて

23

方法:

var result = from db.MyTable.Where(d => (double)d.Price >= minValue 
             && (double)d.Price <= maxValue) 
7

だけで完全なものにするため、あなたが別の入力に基づいてクエリを構築している場合は、連続Where呼び出しとそれを構成することができます。コードの読みやすさのために

IQueryable<SomeType> query = db.MyTable; 
if(minValue != null) // a Nullable<double> 
{ 
    var actualMin = minValue.Value; 
    query = query.Where(d => (double) d.Price >= actualMin); 
} 
if(maxValue != null) // a Nullable<double> 
{ 
    var actualMax = maxValue.Value; 
    query = query.Where(d => (double) d.Price <= actualMax); 
} 
// keep working with "query", for example, query.ToList(); 
+1

、多分あなたはこれらのNULL可能タイプに.HasValueプロパティを使用します。 – BrunoSalvino

+1

@ Bruno meh、それらをnull可能な型と考えるなら、nullと比較するとより自然であり、参照型のテストとよく比較されます。 –