我需要一个列表中的所有值“连接”到另一个列表中的所有值
本文关键字:列表 连接 另一个 一个 | 更新日期: 2023-09-27 18:27:51
"c" "cft"
A 1,A
B 2,B
3,A
3,B
我需要表">cft"中的所有值,其中我们有表"c"中存在的所有项目。在上面的示例中,只有 3 同时具有 A 和 B,并且只应返回 3。
有没有在LINQ(或MS-SQL(中实现这一点的好方法?
我现在能弄清楚的唯一方法是遍历 cft 的所有值,但对于一个大表,这将非常低效。
在 SQL 中,假设您的表是:
CREATE TABLE c (col CHAR(1))
CREATE TABLE cft(ID INT, col CHAR(1))
然后你可以这样做:
DECLARE @Count INT = (SELECT COUNT(*) FROM c)
SELECT ID
FROM (SELECT c.col, cft.ID
FROM c
JOIN cft ON c.col = cft.col) x
GROUP BY ID
HAVING COUNT(*) = @Count
我根据
下面的方案编写了一个 LINQ 查询,
from second in cft
join first in c on second.cID equals first.ID
group second by second.ID into gr
where gr.Count() == c.Count
select second.ID
这里的表结构类似于::
CREATE TABLE c (ID CHAR(1))
CREATE TABLE cft(ID INT, cID CHAR(1))