Linq 查找所有元素的公共值

Linq 查找所有元素的公共值,linq,set,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都会有所帮助 谢谢 这是一个基于SQL Server的解决方案:。您可以在数据集的第二列上使用Intersect运算符 int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 }; i

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

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都会有所帮助

谢谢


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

您可以在数据集的第二列上使用Intersect运算符

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

这是我的想法,我认为有一个更简单的方法,但是

        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;

这将为我提供我要查找的所有值

感谢您的回复,您建议按产品分组并使用intersect查找匹配值?
        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;