我需要一个列表中的所有值" connect"到另一个列表中的所有值

时间:2014-10-24 09:47:52

标签: c# sql linq

"c"     "cft"
A        1,A
B        2,B
         3,A
         3,B

我需要表格“cft”中的所有值,其中我们拥有表“c”中存在的所有项目。在上面的例子中,只有3有A和B,并且只返回3。

有没有一种很好的方法在LINQ(或MS-SQL)中实现它?

我现在唯一可以解决的方法是循环遍历cft的所有值,但是使用大表,这将是非常低效的。

2 个答案:

答案 0 :(得分:2)

在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

答案 1 :(得分:1)

我根据下面的方案编写了一个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))