2017-05-27 2 views
0

Ich übernehme eine Excel-Analyse-App. Es verwendet jQuery Querybuilder auf dem Frontend, das eine nette Where-Anweisung für uns aufbaut. Das Problem ist, dass meine json Abfrage nicht funktioniert.Dynamic Linq gibt keine richtigen Daten zurück

PS. Ich brauche dynamisches LINQ zu verwenden, wie das, was ich

Im Wesentlichen sehen in einem Beispiel, meine Excel-Daten wie folgt wieder aus meinem jQuery Querybuilder ist:

[{"listOfCells":[{"column1":"Bob"},{"column2":"Dylan"},{"column3":"[email protected]"},{"column4":"93208329"}],"rowNumber":0},{"listOfCells":[{"column1":"Rachel"},{"column2":"Best"},{"column3":"[email protected]"},{"column4":"98798792"}],"rowNumber":1}] 

Mein C# Modell ein bisschen wie folgt aussieht:

public class Table 
    { 
     public List<ListOfCells> listOfRows { get; set; } 
     public int rowNumber { get; set; } 
    } 
    public class ListOfCells 
    { 
     public string column0 { get; set; } 
     public string column1 { get; set; } 
     public string column2 { get; set; } 
     public string column3 { get; set; } 
     public string column4 { get; set; } 
    } 

ich bin in der Lage, das Objekt deserialisieren:

var obj = JsonConvert.DeserializeObject<List<Table>>(json);

Und grundlegende Abfragen ausführen. Ich sehe im Grunde nur, um mich all rowNumbers, die ein Treffer für die Abfrage sind:

var trial1 = obj.Select((row, j) => new { needed = row.listOfCells.Where("column1 = @0", "Bob").ToList(), count = j }); 

var rowsNeededAsIntArray = from rows in trial1 
          where rows.needed.Count > 0 
          select rows.count; 

Gib mir, was ich brauche.

aber dieses tut:

var trial1 = obj.Select((row, j) => new { needed = row.listOfCells.Where("column1 = @0 AND (column2 = @1 OR column2 = @2)" ,"Bob", "Dylan", "Best").ToList(), count = j }); 

var rowsNeededAsIntArray = from rows in trial1 
          where rows.needed.Count > 0 
          select rows.count; 

Es sollte die Bewertung oder zuerst, und dann das AND. Aber ich bekomme nichts zurück ...

Antwort

0

Ich denke, dein Problem ist die & & und || Bedingungen.

Sie sollten stattdessen "And" und "Or" in Ihrer dynamischen linq verwenden

+0

Nein, das war es nicht. Ich habe meine Bearbeitung aktualisiert. Guter Vorschlag – user1112324