如何使用 LAMBDA 表达式在 LINQ 中执行 IN 或 CONTAINS?
我有以下 Transact-Sql,我正在尝试将其转换为 LINQ ...并且很挣扎。
SELECT * FROM Project
WHERE Project.ProjectId IN (SELECT ProjectId FROM ProjectMember Where MemberId = 'a45bd16d-9be0-421b-b5bf-143d334c8155')
任何帮助将不胜感激......如果可能的话,我想用 Lambda 表达式来实现。
提前致谢!
I have the following Transact-Sql that I am trying to convert to LINQ ... and struggling.
SELECT * FROM Project
WHERE Project.ProjectId IN (SELECT ProjectId FROM ProjectMember Where MemberId = 'a45bd16d-9be0-421b-b5bf-143d334c8155')
Any help would be greatly appreciated ... I would like to do it with Lambda expressions, if possible.
Thanks in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可能需要 Any() 运算符:
由于
db.ProjectMembers.Where(...)
的结果集始终相同,因此您可以将其拆分,以便它只执行一次:You probably want the Any() operator:
Since the result set of
db.ProjectMembers.Where(...)
will always be the same, you can split it up so that it's executed only once:GFrizzle 比我先一步。 但这里是一个 C# 版本
,作为奖励,还有一个纯 LINQ 方法链版本:
GFrizzle beat me to it. But here is a C# version
And as a bonus a purely LINQ method chain version as well:
在这种情况下,您可以只使用 .Contains(),如下所示:
In this context, you can just use .Contains(), something like this:
不需要 lambda,这里只需一个简单的 LINQ 连接:
No need for a lambda, you've just got a simple LINQ join here: