Linq 查询使用列表选择新的

Posted

技术标签:

【中文标题】Linq 查询使用列表选择新的【英文标题】:Linq query select new with List 【发布时间】:2021-12-30 23:15:48 【问题描述】:

我正在做一个查询,它会返回按购买的产品品牌分组的买家姓名。到目前为止,我在这里

var query= from p in purchaseRepo.ReadAll()
                  join g in guitarRepo.ReadAll() on p.GuitarId equals g.Id
                  join b in brandRepo.ReadAll() on g.BrandId equals b.Id
                  group p by b.Id into grp
                  select new
                  
                      grp.Key,
                      grp.SelectMany(t => t.BuyerName)
                  

我的问题是我想在选择的新部件的正文中声明一个列表或一组买家姓名,但我无法让它工作。 编辑: 我给字段命名是 select new 它看起来像这样:

select new 
                  
                     Brand=grp.Key,
                     Buyers=new List<string>()
                      
                  ;

现在我只需要知道如何将买家名称添加到列表中。 结果应该是这样的: Brand1 --->买家名单

【问题讨论】:

【参考方案1】:

选择一个:

Linq 提供.ToList() 方法 Linq 提供.ToArray() 方法 成为英雄并实现您自己的方法,该方法接受一个 IEnumerable 并返回一个列表,其中填充了来自该可枚举的字符串元素...

【讨论】:

【参考方案2】:

我已经成功了,谢谢大家的帮助!

这是我对其他苦苦挣扎的人的询问:

 var asd = from p in purchaseRepo.ReadAll()
                  join g in guitarRepo.ReadAll() on p.GuitarId equals g.Id
                  join b in brandRepo.ReadAll() on g.BrandId equals b.Id
                  group p by b.Name into grp
                  select new
                  
                      Brand = grp.Key,
                      Buyers = grp.Select(t=>t.BuyerName)

                  ;
        var result = asd
            .Select(x => new KeyValuePair<string, List<string>>(
                x.Brand,
                x.Buyers.ToList()
                ));

【讨论】:

请将自我回答作为对问题的编辑发布,而不是单独发布。

以上是关于Linq 查询使用列表选择新的的主要内容,如果未能解决你的问题,请参考以下文章

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

如何选择具有最低属性 linq 查询语法的对象

linq嵌套选择新的

C# LINQ 从数组/列表中不包含值的位置选择

Linq 到实体 Skip() 和 Take()

使用 linq 在一个 SQL 查询 (EF6) 中为多个数据库列选择可能的值