我需要一个列表中的所有值“连接”到另一个列表中的所有值

本文关键字:列表 连接 另一个 一个 | 更新日期: 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))