Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在linq列表中分组并在c#linq中连接一些字符串_C#_Linq - Fatal编程技术网

如何在linq列表中分组并在c#linq中连接一些字符串

如何在linq列表中分组并在c#linq中连接一些字符串,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; pu

我有一个名为“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;

现在的问题是,我需要根据BelongCategoryName对这个结果进行分组,并使用add“,”连接ItemName的输出列。您可以实现如下要求:

var resultSet = 
       results.GroupBy(e => e.BelongCategoryName)
              .ToDictionary(e => e.Key, 
                  g => string.Join(",", g.Select(a => a.ItemName)));
resultSet
现在是一个
字典

或者,如果要将上述查询链接到已启动的查询:

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

非常感谢你的帮助。很好用。@SithijaSahan不客气。如果你不喜欢方法语法,我还提供了一个只支持查询语法的版本。我需要一些帮助,同时我可以得到ItemPrice的总和吗?Thanks@SithijaSahan当然你想要一个
字典
还是一个匿名类型,有两个属性
BelongCategoryName
和价格之和?第二种方法更好,有两个属性,我检查了你的上一个代码块,它工作正常,输出显示为“BelongCategoryName”和“ItemNames”,我认为最好有这种类型的输出,例如:BelongCategoryName、ItemName、TotalPrice等
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)
              };