簡體   English   中英

如何使用 SQL 之類的“IN”語句創建 LinQ 查詢?

[英]How do I create a LinQ query with an “IN” statement like SQL?

我需要一個與下面執行相同操作的 LinQ 查詢……但我似乎無法弄清楚。 (我正在使用 C#)

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

不是這個(標記為重復問題)

SELECT * 來自用戶 WHERE User_Rights IN(“Admin”、“User”、“Limited”)

如果它們相同,那么就這樣吧……我當然會以此為答案。

如果 Groups 集合在組中,並且 detail 是詳細的,那么

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

這將檢查組的每個元素以查看 id 屬性是否與詳細信息集合的任何 groupid 屬性相同。


請務必注意,這可能不是您的用例的最佳解決方案——如果您的組非常大,那么我會考慮將其放入列表並使用包含——這將為您提供 hash 性能。 對於較小規模的組,制作列表的成本將大於性能增益。

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM