我有一个由Id(Item1)和Value(Item2)组成的元组列表,如下所示:
var tupleList = new List<Tuple<int, int>>
{
Tuple.Create( 100, 1 ),
Tuple.Create( 100, 1 ),
Tuple.Create( 100, 2 ),
Tuple.Create( 101, 1 ),
Tuple.Create( 101, 2 ),
Tuple.Create( 101, 3 ),
Tuple.Create( 102, 1 ),
Tuple.Create( 102, 2 ),
Tuple.Create( 102, 3 )
};
目标是在每个分组的Id(Item1)之间找到公共值(Item2)并将它们添加到整数数组中。使用此示例,Ids应分组为100,101和102.然后,我只需要提取所有组共有的值。
换句话说,使用上面的例子,最终输出将是:
{ 1, 2 }
另请注意,我为100添加了一个重复条目作为测试 - 不确定是否有必要。
我希望这是有道理的。抱歉没有提供任何代码,因为我甚至不确定如何开始编码。
答案 0 :(得分:1)
这是一种考虑的方法:
var count = tupleList.Select(z => z.Item1).Distinct().Count();
var allThere = tupleList
.GroupBy(z => z.Item2)
.Where(z => z.Distinct().Count() == count)
.Select(z => z.Key)
.ToList();
第一行获取唯一Item1
值的数量。
第二行按Item2
对原始输入进行分组,然后计算行数。如果计数与count
相同,那么他们必须全部在那里。