我有一个词典:
Dictionary<Project,List<User>> dictionary,
每个项目都有一组用户。
我想检索组织这些数据,以便所有具有类似用户的项目都被安排到这种数据结构中:
List<Tuple<List<Project>,List<User>>>
我甚至不知道从哪里开始。我已经和它斗争了好几天。
答案 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
的内容并对其进行查询。