我有一个解释:这是否适合Linq GroupBy?
Dictionary<Project,List<User>> dictionary,
每个项目都有一组用户。
我想检索组织数据,使得它们都具有类似的用户项目安排到这种数据结构:
List<Tuple<List<Project>,List<User>>>
我甚至不知道从哪里开始。我一直在为此奋战数天。
我有一个解释:这是否适合Linq GroupBy?
Dictionary<Project,List<User>> dictionary,
每个项目都有一组用户。
我想检索组织数据,使得它们都具有类似的用户项目安排到这种数据结构:
List<Tuple<List<Project>,List<User>>>
我甚至不知道从哪里开始。我一直在为此奋战数天。
用户列表是你应该分组的关键。在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();
}
}
BTW:比较程序是对列表而不是IEnumerables,否则每个比较比较的对象应被一遍又一遍列举。
您可能想要关注[此主题](http://stackoverflow.com/questions/6948019/linq-implementation-of-cartesian-product-with-pruning)了解更强大的比较器。 –
我以前的问题很相似。答案会帮助你。 group object with equal collections
与类似用户相同的用户是指在其子集合中具有相同用户的项目? – Jeroen
是的,这就是我的意思。在继承人子集合中拥有相同用户的项目。 – Attilah