【发布时间】:2011-06-18 12:14:30
【问题描述】:
我正在尝试将我在 Linq 中工作的 Linq 查询转换为能够在动态 linq 中工作(使用 System.Linq.Dynamic),因为我希望用户能够形成自己的查询和这个查询字符串将在运行时添加到其他查询字符串中。
我有一个问题:
db.incidents.Where(a => a.incidentLocations.Single().location.street.Contains(location);
我已尝试将其转换为以下动态 linq 字符串:
query =
string.Concat("incidentLocations.Single().location.street.Contains(\"", location, "\")");
db.incidents.Where(query);
其中 location 是一个包含搜索文本的字符串。
我已设法将所有其他查询转换为动态 linq,但我正在努力解决异常错误:
“不存在适用的聚合方法‘Single’”
我知道动态 linq 不支持所有扩展方法,有人可以告诉我如何解决这个问题。
【问题讨论】:
-
我没用过Dynamic Linq,你试过
SingleOrDefault()吗?它或多或少做同样的事情。只有在没有找到记录而不是抛出错误时才返回null。 -
我对 Dynamic Linq 不是很熟悉,但是是 SQL 还是 Objects?
-
也许单身应该是First()?
-
既然可以将多个 linq 查询组合成一个巨大的表达式,为什么要将硬编码部分转换为动态的?保持原样,然后将额外的动态查询添加为额外的过滤器或子选择?
标签: linq