簡體   English   中英

如何在linq列表中分組並在c#linq中連接一些字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM