[英]How to group in linq list and concatenate some string in 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分组,并使用添加“,”将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)
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.