查找所有元素共有的值

时间:2010-03-02 15:57:49

标签: linq set

我有一个包含两列的数据集,如下所示;

Prod Value
A    1
A    2
A    3
B    2
B    4
C    1
C    2

所以我想要Prod常见的所有行,所以在上面的例子中只会返回以下内容。

A   2
B   2
C   2 

LINQ或sql都会有所帮助

由于

3 个答案:

答案 0 :(得分:1)

--    DROP TABLE #t2  UNCOMMENT WHEN TESTING...

CREATE TABLE #t2
(
 Prod varchar(50),
 Value int
)

INSERT INTO #t2 VALUES ('A', 1)
INSERT INTO #t2 VALUES ('A', 2)
INSERT INTO #t2 VALUES ('B', 2)
INSERT INTO #t2 VALUES ('B', 4)
INSERT INTO #t2 VALUES ('C', 2)

SELECT 
    DISTINCT
    p1.Prod, 
    p2.Value 
FROM 
    #t2 p1
INNER JOIN 
    #t2 p2 
ON 
    p2.Value = p1.Value AND p1.Prod <> p2.Prod

这是一个基于SQL Server的解决方案:)。

答案 1 :(得分:1)

您可以在数据集的第二列上使用“相交”运算符。

int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
var commonNumbers = numbersA.Intersect(numbersB);

Linq Samples

答案 2 :(得分:1)

这是我提出来的,我认为有一种更简单的方法,但是;

        var prodList = (from col in list select col["Prod"]).Distinct().ToList();


        var valueList = from col in list
                        group col by col["Value"] into g
                        where g.Count() == prodList.Count()
                        select g.Key;

这将为我提供我正在寻找的所有价值