C# 要嵌入到主查询中的LINQ到SQL表达式

C# 要嵌入到主查询中的LINQ到SQL表达式,c#,.net,sql-server,linq,C#,.net,Sql Server,Linq,提出论坛申请。我有主题和消息回复。我希望当前用户标志和一些其他与消息相关的信息喜欢从数据库中提取要附加的消息。 有了LINQ,我可以得到如下结果: var messages = _repoMessages.GetAll() .Select(m => new { Message = m, IsLikedByCurrentUser = m.Likes

提出论坛申请。我有主题和消息回复。我希望当前用户标志和一些其他与消息相关的信息喜欢从数据库中提取要附加的消息。 有了LINQ,我可以得到如下结果:

var messages = _repoMessages.GetAll()
               .Select(m => new { Message = m, 
                                  IsLikedByCurrentUser = m.Likes
                                    .Any(l => l.UserId == currentUserId)});
其中currentUserId是从上面的一些代码中提供的

我有三个或更多不同的查询需要填充此标志,并且需要为每个查询重复此逻辑。有没有一种方法可以得到一段代码表达式?func?这会计算标志,以便它可以在LINQ表达式中使用并很好地转换为SQL?显然,如果我让Func实现这个目标,那么我将无法将其嵌入到上面的代码中,因为Func无法转换为sql查询

更新

可能的解决办法:

创建一个db视图,该视图连接消息和USR喜欢的内容,然后 它作为消息EF实体中的虚拟导航道具 使用代理选择新建{Message=m,CurrentUserId=CurrentUserId} 它注入用户Id,然后应用独立表达式 把这个转化成我需要的
但我希望有更好的解决方案:

您可以准备自己的函数来构建ExpressionTree-然后它将被EF重新认可。@pwas是的,我想到了,但仍然不知道如何构建自己的树…@LINQ2Vodka那么听起来您应该学习了。有没有办法获得一段代码表达式?func?这会计算标志,以便它可以在LINQ表达式中使用并很好地转换为SQL?是的。它被称为>:SQL:SELECT Flag,Count*从消息中,其中UserId=@CurrentUserId GROUP BY Flag