Linq 查询 - 列表中的列表 [重复]

Posted

技术标签:

【中文标题】Linq 查询 - 列表中的列表 [重复]【英文标题】:Linq query - List within List [duplicate] 【发布时间】:2018-01-05 17:38:55 【问题描述】:

我正在尝试选择一个包含Fund.NameList<Investment> 的列表。

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 );

【讨论】:

以上是关于Linq 查询 - 列表中的列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用Linq获取列表中对象的索引[重复]

如何使用 linq 将列表中的列表转换为单个列表 [重复]

使用 LINQ 删除列表中的项目 [重复]

如何在linq C#中使用group by并获取记录列表[重复]

OrderBy IQueryable 列表基于 LINQ 中的另一个内部列表 [重复]

使用 LINQ 选择单个列表的所有唯一组合,不重复