动态Linq没有返回正确的数据

时间:2017-05-27 13:54:50

标签: c# json linq

我接管了一个Excel解析类型的应用程序。它在前端使用jQuery Querybuilder为我们构建了一个很好的where语句。问题是我的json查询无效。

PS。我需要使用动态LINQ,因为这是我从jQuery Querybuilder获取的内容

基本上在一个例子中,我的Excel数据如下所示:

[{"listOfCells":[{"column1":"Bob"},{"column2":"Dylan"},{"column3":"bob@awesome.com"},{"column4":"93208329"}],"rowNumber":0},{"listOfCells":[{"column1":"Rachel"},{"column2":"Best"},{"column3":"Rachel@awesome.com"},{"column4":"98798792"}],"rowNumber":1}]

我的c#模型看起来有点像这样:

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; }
    }

我可以反序列化对象:

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

运行基本查询。我基本上只是想给我所有对查询有积极影响的rowNumbers:

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;

给我我需要的东西。

但是这个没有:

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;

首先评估OR,然后评估AND。但我什么也得不回来......

1 个答案:

答案 0 :(得分:0)

我认为你的问题是&amp;&amp;和||条件。

你应该使用&#34;和&#34;和&#34;或&#34;在你的动态linq