2017-07-29 79 views
0

我试图选择一个包含Fund.NameList<Investment>的列表。Linq查询 - 列表中的列表

var funds = new List<Fund> 
{ 
    new Fund { Id = 1 , Name = "good" }, 
    new Fund { Id = 2, Name = "bad" } 
}; 

var investments = new List<Investment> 
{ 
    new Investment { Fund = funds[0], Value = 100 }, 
    new Investment { Fund = funds[0], Value = 200 }, 
    new Investment { Fund = funds[1], Value = 300 } 
}; 

然后我试图创建与此查询:

var query = from f in funds 
      join i in investments 
      on f.Id equals i.Fund.Id 
      select new { f.Name, i }; 

我想是这样的:

{ Name = good, {{ Id = 1, Value = 100 }, { Id = 1, Value = 200 }}}, 
{ Name = bad, { Id = 2, Value = 300 }} 

但我发现了这样的事情:

{ Name = good, { Id = 1, Value = 100 }}, 
{ Name = good, { Id = 1, Value = 200 }}, 
{ Name = bad, { Id = 2, Value = 300 }} 

回答

1

尝试使用GroupJoin。

var query = funds.GroupJoin(investments, f => f.Id, i => i.Fund.Id, (f, result) => new { f.Name, result });