c# - 如何在linq列表中分组并在c#linq中连接一些字符串
问题描述
我有一个名为“HoldItems”的域实体,我创建了一个 HoldItems 对象列表。
该 HoldItems 上的所有属性都是:
public int TransactionNo;
public int TransactionID;
public int ItemNo;
public String ItemName;
public int Qty;
public double Price;
public double TotalPrice;
public double DiscountPrice;
public int ItemType;
public bool VatInclude;
public double VatPrice;
public string Note;
public List<HoldExtraMenu> ExtraMenuList;
public string BelongCategoryName;
public int BelongItemNo;
public int BelongItemIndex;
public int BelongCategoryID;
我写了一些这样的 LINQ 查询,selectedItemList 代表List<DomainEntities.HoldItems>
var results = from myobject in selectedItemList
where myobject.ItemType == 5
where myobject.BelongItemIndex==selectedItemList.IndexOf(C)
orderby myobject.BelongCategoryName
select myobject;
现在的问题是,我需要按 BelongCategoryName 对这个结果进行分组,并使用 add "," 连接 ItemName 的输出列
解决方案
您可以通过以下方式实现要求:
var resultSet =
results.GroupBy(e => e.BelongCategoryName)
.ToDictionary(e => e.Key,
g => string.Join(",", g.Select(a => a.ItemName)));
resultSet
现在是一个Dictionary<string, string>
。
或者,如果您想将上述查询链接到您已经开始的查询:
var results = (from myobject in selectedItemList
where myobject.ItemType == 5
where myobject.BelongItemIndex == selectedItemList.IndexOf(C)
orderby myobject.BelongCategoryName
group myobject by myobject.BelongCategoryName)
.ToDictionary(e => e.Key,
g => string.Join(",", g.Select(a => a.ItemName)));
或仅使用查询语法:
var results = from myobject in selectedItemList
where myobject.ItemType == 5
where myobject.BelongItemIndex == selectedItemList.IndexOf(C)
orderby myobject.BelongCategoryName
group myobject by myobject.BelongCategoryName into h
select new
{
BelongCategoryName = h.Key,
ItemNames = string.Join(", ", from e in h select e.ItemName)
};
推荐阅读
- c++ - 不能使用 Qt Xlsx
- flutter - 颤动——未来
转换为布尔值 - python - 如何从 Ajax 请求中获取数据并据此更改 HTML?
- haskell - Alex 要求结果令牌类型是采用 AlexPosn 的某个函数
- python - 如何找到重复患者并添加新列
- list - SwiftUI 如何在其中创建带有自定义 UIViews 的列表
- virtual-machine - 使用 Terraform for Azure 创建多个虚拟机的问题
- r - 使用 nlstools 包或 glm 在 R 中进行逻辑回归?
- c# - 为什么 EF 核心中的 ExecuteSqlRaw() 方法忽略了一些数据库关键字
- android - 如何制作工具栏,使其始终位于其下的所有视图和布局之上?