如何使用类似SQL的“ IN”语句创建LinQ查询?

时间:2019-10-30 21:18:33

标签: c# sql linq

我需要一个与以下功能相同的LinQ查询...但是我似乎无法弄清楚。 (我正在使用C#)

SELECT * FROM Groups WHERE Id IN(
SELECT DISTINCT [GroupId] FROM [MyTable].[dbo].[Detail])

不是(标记为重复的问题)

选择*来自用户所在的用户名(“管理员”,“用户”,“受限”)

如果它们是相同的,那就这样吧……我当然会以它为答案。

1 个答案:

答案 0 :(得分:1)

如果“网上论坛”收藏是分组的,并且详细信息是详细信息,那么

 groups.Where(z => detail.Any(x => x.groupid == z.id));

这将检查组的每个元素,以查看id属性是否与详细信息集合的任何groupid属性相同。


重要的是要注意,对于您的用例而言,这可能不是最佳解决方案-如果您的组非常大,那么我会考虑将其放入列表并使用contains-这将为您带来哈希性能。对于较小的组,制作列表的成本将大于性能的提高。

 var idlist = details.Select(x => x.groupid).ToList();

 groups.Where(z => idlist.Contains(z.id));