我有一个像这样的对象
// 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
)。
答案 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()));