C# 类的列表将多个值分配给字符串列表 类命令 { 公共字符串orderNumber{get;set;} 公共字符串id{get;set;} 公共列表idList{get;set;} }

C# 类的列表将多个值分配给字符串列表 类命令 { 公共字符串orderNumber{get;set;} 公共字符串id{get;set;} 公共列表idList{get;set;} },c#,list,class,C#,List,Class,我有一个从1到100的订单列表。我需要为列表中的每个成员分配“订单号”相同的列表中其他成员的所有“id”。我想将其分配给字符串的“idList”列表。在订单列表中,可能有多组订单具有相同的“订单号” 我试着从逻辑上考虑这个问题,但无法找到一个可行的解决方案 我尝试了以下方法: class orders { public string orderNumber { get; set; } public string id { get; set; } public List&l

我有一个从1到100的订单列表。我需要为列表中的每个成员分配“订单号”相同的列表中其他成员的所有“id”。我想将其分配给字符串的“idList”列表。在订单列表中,可能有多组订单具有相同的“订单号”

我试着从逻辑上考虑这个问题,但无法找到一个可行的解决方案

我尝试了以下方法:

class orders
{
    public string orderNumber { get; set; }
    public string id { get; set; }
    public List<string> idList { get; set; }
}
List temp=new List();
对于(int x=0;x
您可以按订单号分组,并加入同一组中的
id
s:

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();
                }
            }
但是,由于您并不真正需要
订单列表
,因此最好选择匿名类型:

var result = orders.GroupBy(x => x.orderNumber).Select(g => new orders{
           orderNumber  = g.Key,
           idList = g.Select(x => x.Id).ToList()
          }
或者创建一个新类型的类,如:

类领主 { 公共字符串orderNumber; 公众名单上的游手好闲者; }

然后:

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

“无法想出有效的解决方案。”
——向我们展示当时不起作用的解决方案。我们不是代码编写服务。我尝试在orders[x]上使用for循环和匹配。orderNumber==orders[x+1]。orderNumber,然后将这两个“id”添加到字符串列表中并递增计数。一旦循环找到不匹配的下一个orderNumber,我就使用另一个上升到计数的for循环将字符串列表分配给每个订单的“idList”。这适用于具有相同订单号但不具有倍数的1组订单。
.Select(g => new FinalOrder{
               orderNumber  = g.Key,
               idList = g.Select(x => x.Id).ToList()
     }