2016-12-16 7 views
0

Ich bekomme Ergebnis von db durch Filter übergeben. Zur Zeit habe ich code Liste übergeben und ich bekomme korrekte Daten. Unten ist der Code.Linq übergeben mehrere Liste in, wo Bedingung

public DataTable getData(IList<string> Code, 
         IList<string> category, 
         IList<string> state, 
         IList<string> Type, 
         IList<string> general) 
{ 
    DataTable dt = new DataTable(); 
    var result = _db.Sample.Where(x => Code.Contains(x.Code)); 

    if (result == null) 
    { 
     return null; 
    } 
    else 
    { 
     dt = Utility.ToDataTable(result.ToList()); 
    } 

    return dt; 
} 

Ich habe 4 weitere Filter passieren, das heißt, category, state, type and general. Außerdem muss ich prüfen, ob keiner von ihnen null ist.

Ich bin mir nicht sicher, wie Sie die Werte für null überprüfen und dann an die Abfrage übergeben.

Alle mögliche Vorschläge würden

Antwort

1

Sie erkannt werden, können überprüfen, ob die alle 5 null sind und führen Sie dann die lambda Ausdruck. Und um Bedingungen für 4 zusätzliche Filter hinzuzufügen, verwenden Sie den Operator && und fügen Sie ihn zusammen mit dem Code-Filter hinzu.

public DataTable getData(IList<string> Code, IList<string> category, IList<string> state, IList<string> Type, IList<string> general) 

     { 
      DataTable dt = new DataTable(); 

       if(code==null) 
       code='' 
       if(category==null) 
       category='' 
       if(state==null) 
       state='' 
       if(general==null) 
       general=''    

       var result = _db.Sample.Where(x => (Code.Contains(x.Code) || Code=='') && (category.Contains(x.category)|| category=='') && (state.Contains(x.state)||state=='') && (general.Contains(x.general)||general=='')) 


      if (result == null) 
      { 
       return null; 
      } 
      else 
      { 
       dt = Utility.ToDataTable(result.ToList()); 
      } 
      return dt; 
     } 
+0

dieser wird die Abfrage nicht ausgeführt werden, wenn Code null ist oder irgendein anderer Parameter null Ich möchte überprüfen, ob einer der Parameter hat Wert dann in Anwendung, wenn Bedingung –

+0

@OwaisAhmed Aktualisiert meine Antwort –

+0

@JibinBalachandran wird dies nicht Null-Ausnahme werfen, wenn einer von ihnen null ist, da der Null-Check nach dem enthält-Check durchgeführt wird? –

1

Ich bin mir nicht sicher, ob Sie für alle Liste oder nur für eine von ihnen überprüfen möchten. I‘, sowohl für die Lösung geben

public DataTable getData(IList<string> Code, IList<string> category, IList<string> state, IList<string> Type, IList<string> general) 

    { 
     DataTable dt = new DataTable(); 
     var result = null; 
     //result = _db.Sample.Where(x => Code.Contains(x.Code) && category.Contains(x.category) && state.Contains(x.state) && general.Contains(x.general)); 
     //if you wish to check for any one 
     result = _db.Sample.Where(x => (Code != null && Code.Contains(x.Code)) || (category != null && category.Contains(x.category)) || (state != null && state.Contains(x.state)) || (general != null && general.Contains(x.general))); 


     if (result == null) 
     { 
      return null; 
     } 
     else 
     { 
      dt = Utility.ToDataTable(result.ToList()); 
     } 
     return dt; 
    } 
+0

Wenn jedoch einer der Parameter null ist, wird die Abfrage nicht ausgeführt. Ich möchte auch, wenn einer von ihnen Wert enthält –

+0

@OwaisAhmed Ich habe meine Antwort auf Ihre obige Abfrage bearbeitet –

+1

@SethuBala, Ja richtig .. +1 von meiner Seite –

Verwandte Themen