0

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

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

上面的查询工作正常(与其他字符串字段,即使有大量数据)除了分类字段。由于我无法直接对分类字段进行比较,所以我只拿了它的字符串部分进行比较。分类领域的条件就像

Type.Label = "文本"

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

但是当没有时它会失败。列表中的项目约为 419。

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

有什么线索吗?

4

1 回答 1

0

您正在寻找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); } 
于 2013-12-18T23:24:40.587 回答