相交字典<string,list <anime =“”>&gt;在动漫类的财产

时间:2017-10-23 22:16:36

标签: c# list dictionary array-intersect

我有一个像这样的对象

// following is ECMA 6 only
// get params and make sure values are what you expect (check for injection) + direction must be = "asc" || "desc"
db.yourcollection.find(...).sort({ [sort]: direction }).limit(30)

然后我有一个像

这样的列表字典
public class Anime 
{
    public Guid Id {get; set;}
    public DateTime? CreatedOn {get; set;}

}

我正在与所有列表相交,但我想仅在Anime ID上进行交集,但仍然将结果作为Dictionary<string, List<Anime>> myLists = new Dictionary<string, List<Anime>>(); ,不确定如何专门强制它在ID上执行。这就是我所拥有的:

List<Anime>

有没有办法告诉它在ID属性上相交,但仍然以动画列表的形式获得结果? (myResult.AddRange(myLists.Values.Aggregate(new HashSet<Anime>(myLists.First().Value.ToList()), (h, e) => { h.IntersectWith(e); return h; })); myResult)。

2 个答案:

答案 0 :(得分:1)

我认为列表不能包含多个具有相同Id的动画。 这应该有效:

var result = myLists.Values.SelectMany(p => p)
                .GroupBy(a => a.Id)
                .Where(g => g.Count() == myLists.Values.Count)
                .Select(g => g.First());

答案 1 :(得分:0)

属性上的相交相当于join

myResult.AddRange(myLists.Values.Aggregate((a, l) => a.Join(l, am => am.Id, lm => lm.Id, (am, lm) => am).ToList()));