这适合Linq GroupBy吗?

时间:2011-08-03 03:30:30

标签: c# .net linq

我有一个词典:

      Dictionary<Project,List<User>> dictionary,

每个项目都有一组用户。

我想检索组织这些数据,以便所有具有类似用户的项目都被安排到这种数据结构中:

      List<Tuple<List<Project>,List<User>>>

我甚至不知道从哪里开始。我已经和它斗争了好几天。

3 个答案:

答案 0 :(得分:1)

从某个时候回来我的问题是类似的。答案对你有帮助。 group object with equal collections

答案 1 :(得分:1)

用户列表是您应该分组的关键。在GroupBy()中你可以使用像这样的比较器:

public class ListComparer<T> : IEqualityComparer<List<T>>
    where T : IComparable<T>
{
    public bool Equals(List<T> x, List<T> y)
    {
        return x.OrderBy(u => u).SequenceEqual(y.OrderBy(u => u));
    }

    public int GetHashCode(List<T> obj)
    {
        return obj.GetHashCode();
    }
}

顺便说一句:比较器在列表中而不在IEnumerables上,否则对于每次比较,应该反复枚举比较对象。

答案 2 :(得分:0)

最好的方法是展开dictionary的内容并对其进行查询。