2017-05-09 53 views
0

我有两个列表,并想回国为Dictionary<UnitModel, IList<Model>>使用组加入返回键值对

当我使用群组加入,则返回IEnumerable<Dictioanry<UnitModel,IList<Model>>>

modelList.GroupJoin(unitList, i => i.UnitId, u => u.Id, (u, i) => new Dictionary<UnitModel, IList<Model>> 
      { 

      }); 

我希望如果有人知道如何使用群组加入或任何其他方式返回字典?

回答

0
modelList.GroupJoin(unitList, i => i.UnitId, u => u.Id, (u, i) => new { u, i }).ToDictionary(g => g.u, g => g.i); 
0

你可以做这样的事情:

var elements = modelList.GroupJoin(unitList, i => i.UnitId, u => u.Id, (u, i) => new KayValuePair<UnitModel, IList<Model>> 
{ 

}); 
var list = elements.ToList(); //execute 
var result = new Dictionary<UnitModel, IList<Model>>(list); 

所以,这一翻译返回Dictionary的,您使用的KeyValuePair列表来构建它。如果您想从LinQ返回Dictionary,则需要使用.ToDictionary()方法。

+0

我可能失去了一些东西,但是当你做.ToList(),它仍然会返回它作为列表,当你传递到词典,它不会工作,因为它会被期待字典和我们正在通过一个列表? – user1932923

+0

我相信这也确实解决了这个问题:https://ole.michelsen.dk/blog/grouping-data-with-linq-and-mvc.html – user1932923

+0

@ user1932923,GroupJoin返回一个IEnumerable,你可以使用它Dictionary的构造函数。否则,您需要使用.GroupBy然后ToDictionary –