动态 LINQ 查询无法与“分类”字段正常工作



我正在使用动态Linq查询。我正在将查询条件动态生成为字符串并传递给查询。下面是我正在使用的代码。

 var q = dc.ListDirectory.AsQueryable().Where(condition).OrderBy("Title");
 foreach (var p in q)
 {
   Console.WriteLine(p.Title);`enter code here`
 }

上述查询工作正常(即使包含大量数据,也可以使用其他字符串字段),但分类字段除外。由于我无法直接理解分类字段,因此我只将其字符串部分进行比较。分类字段的条件如下所示

Type.Label = "Text"

使用分类字段条件查询:只有 10 个。列表中的项目,它工作正常。

但是当列表中的项目编号约为 419 时,它就会失败。

我发现它甚至在获得 var q 中的值之前就开始执行 foreach 循环并给出未设置的对象引用......错误。

有什么线索吗?

您正在寻找c.TaxnonomyColumnName].Label.Equals("Text")...但这并不能保证c.Title不会为空(我不确定在这种情况下c是什么,所以我无法帮助您解释为什么它会为空)。

如果您不想获得空引用异常,那么我可以添加一个额外的 where 子句来过滤掉它们。

var q = from c in dc.ListDirectory
        where (c.[TaxnonomyColumnName].Label.Equals("Text") && c.Title != null)
        select c.Title;
foreach (var p in q) { Console.WriteLine(p); } 

最新更新