2009-09-12 8 views
14

ich LINQ bin mit SQL meine Datenbank abzufragen, ich habe eine Abfrage sehr ähnlich wie diese:LINQ to SQL-Wert zwischen zwei Doppel Werte

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

ich die Notwendigkeit, wo Klausel eine d.Proce >= minValue zu haben, und d.Price =< maxValue (wie ein T-SQL BETWEEN Klausel).

Wie kann ich das tun?

Antwort

23

Wie wäre es damit:

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

Nur der Vollständigkeit halber; wenn Sie eine Abfrage bauen basierend auf verschiedenen Eingaben Sie es mit aufeinanderfolgenden Where Anrufe zusammenstellen können:

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

Aus Gründen der Lesbarkeit Code, vielleicht möchten Sie .HasValue Eigenschaft auf diesen Nullable Types verwenden. – BrunoSalvino

+1

@Bruno Meh, wenn Sie sie als nullbare Typen betrachten, dann ist für mich der Vergleich mit null natürlicher und vergleicht sich gut mit Testing-Referenztypen. –