2010-12-22 13 views
2

Ich habe eine LINQ to SQL-Abfrage, die so geht:eine Liste als Bedingung für LINQ to SQL-Abfrage verwendet

String NameCondition = "Test"; 
String EmailCondition = "[email protected]"; 

IQueryable<User> Users = Repository.Where(x => x.Name.Equals(NameCondition) && x.Email.Equals(EmailCondition)); 

Aber jetzt Benutzer ziehen aus Ich habe eine Liste von Bedingungen, bei denen ich möchte, wenn Sie passen zu jedem von ihnen (wie eine OR-Anweisung in SQL). So habe ich eine Liste der Wörterbücher, und jedes Wörterbuch ist ein Zustand, mit einem Namen und E-Mail:

List<Dictionary<String, String>> Conditions; 

Wie kann ich eine LINQ to SQL-Abfrage durchführen, diese Bedingungen mit?

+1

Warum haben Sie eine Liste von Wörterbüchern? Es klingt, als würden Sie sagen, dass jedes Wörterbuch nur einen Eintrag enthält. Ist das der Fall? –

Antwort

0

Verwendung PredicateBuilder von Josef Albahari

http://www.albahari.com/nutshell/predicatebuilder.aspx

Hier ist ein Beispiel-Nutzung.

IQueryable<Product> SearchProducts (params string[] keywords) 
{ 
    var predicate = PredicateBuilder.False<Product>(); 

    foreach (string keyword in keywords) 
    { 
    string temp = keyword; 
    predicate = predicate.Or (p => p.Description.Contains (temp)); 
    } 
    return dataContext.Products.Where (predicate); 
} 
+2

Warum die Bearbeitung Daniel. ?? Ich dachte, dass das Verwendungsbeispiel den Link gut unterstützt –

+0

@jim Es ist froh, die Privilegien zu verwenden :-) –

+0

ab (verwenden) in meinem Fall wahrscheinlich :-) –

0

Statt Wörterbuch verwenden List<KeyValuePair<string, string>> in .NET 3.5 und List<Tuple<string, string>> in .NET 4.0.

Siehe einige ähnliche question