我接管了一个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。但我什么也得不回来......
答案 0 :(得分:0)
我认为你的问题是&amp;&amp;和||条件。
你应该使用&#34;和&#34;和&#34;或&#34;在你的动态linq