"c" "cft"
A 1,A
B 2,B
3,A
3,B
我需要表格“cft”中的所有值,其中我们拥有表“c”中存在的所有项目。在上面的例子中,只有3有A和B,并且只返回3。
有没有一种很好的方法在LINQ(或MS-SQL)中实现它?
我现在唯一可以解决的方法是循环遍历cft的所有值,但是使用大表,这将是非常低效的。
答案 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))