bre*_*vhb 5 .net c# linq-to-sql
我想编写一个查询,该查询应该获取用户对象以及用户已经发布的消息量.我这样做的方式如下:
var query = (from u in _db.Repository<User>()
where u.IsDeleted != true
select new UserWithMessagecount()
{
User = u
MessageCount = GetUserMessageCount(u.Documents).Count(),
});
Run Code Online (Sandbox Code Playgroud)
我正在使用一种方法,因为应该过滤掉一些消息(以动态方式).
为了简单起见,我将发布没有排序逻辑的函数(它仍会产生相同的错误).
private EntitySet<Document> GetUserMessageCount(EntitySet<Document> set)
{
return set;
}
Run Code Online (Sandbox Code Playgroud)
返回的错误是:
方法'x'没有支持的SQL转换.
有关如何解决此问题的任何想法?
Linq-to-SQL将尝试将您的整个语句转换为SQL,当然没有GetUserMessageCount()可用.
您需要通过枚举来获取SQL查询的结果 - 然后应用C#端逻辑.
请改用此语法:
var query = (from u in _db.Repository<User>()
let MessageCount = GetUserMessageCount(u.Documents).Count()
where u.IsDeleted != true
select new UserWithMessagecount()
{
User = u,
MessageCount = MessageCount
});
Run Code Online (Sandbox Code Playgroud)