类列表将多个值分配给字符串列表

问题描述 投票:1回答:1
class orders
{
    public string orderNumber { get; set; }
    public string id { get; set; }
    public List<string> idList { get; set; }
}

我有一个订单列表,可以是1到100之间的任何地方。我需要为列表中的每个成员分配列表中其他成员“orderNumber”相同的所有“id”。我想将其分配给“idList”字符串列表。在订单列表中,可能存在多组具有相同“orderNumber”的订单。

我试图从逻辑上考虑这一点,但无法提出一个有效的解决方案。

我尝试了以下方法:

List<string> temp = new List<string>();
            for (int x = 0; x < orders.Count; x++)
            {

                if (string.Equals(orders[x].orderNumber, orders[x + 1].orderNumber))
                {
                    temp.Add(orders[x].id);
                    temp.Add(orders[x + 1].id);
                    i++;
                }
                else
                {
                    for(int o = 0; o < i; o++)
                    {
                        orders[o].idList= new List<string>();
                        orders[o].idList= temp;
                    }

                    i = 0;
                    temp.Clear();
                }
            }
c# list class
1个回答
2
投票

您可以GroupBy orderNumber,并加入同一组内的ids:

var result = orders.GroupBy(x => x.orderNumber).Select(g => new orders{
           orderNumber  = g.Key,
           idList = g.Select(x => x.Id).ToList()
          }

但是,由于您并不真正需要orders列表,因此最好选择匿名类型:

.Select(g => new {
               orderNumber  = g.Key,
               idList = g.Select(x => x.Id).ToList()
              }

或者只是创建一个新类型的类:

class FinalOrder {public string orderNumber; public List idList; }

然后:

.Select(g => new FinalOrder{
               orderNumber  = g.Key,
               idList = g.Select(x => x.Id).ToList()
     }
© www.soinside.com 2019 - 2024. All rights reserved.