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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类列表将多个值分配给字符串列表相关的知识,希望对你有一定的参考价值。

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();
                }
            }
答案

您可以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()
     }

以上是关于类列表将多个值分配给字符串列表的主要内容,如果未能解决你的问题,请参考以下文章

如何重写此代码,将字符串列表分配给字符串对象的集合?

将“活动”类分配给 EmberJS 中的选定列表项

在 Kdb 中,如何将每个符号列表分配给值列表

如何使用for循环将返回值分配给变量

如何将列表内列表的值分配给列表内另一个列表的值(python)?

如何将列表中的值分配给熊猫数据框并控制每个列表元素在数据框中的分布/频率