【问题标题】:List of Class Assign multiple values to string list类列表将多个值分配给字符串列表
【发布时间】:2018-10-31 19:44:41
【问题描述】:
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();
                }
            }

【问题讨论】:

  • "cannot come up with a solution that works." -- 向我们展示当时不起作用的解决方案。我们不是代码编写服务
  • 我尝试使用 for 循环并匹配 orders[x].orderNumber == orders[x + 1].orderNumber 然后将两个“id”添加到字符串列表并增加计数.一旦循环找到下一个不匹配的 orderNumber,我就使用另一个上升到计数的 for 循环将字符串列表分配给每个订单的“idList”。这适用于具有相同 orderNumber 但不是倍数的一组订单。

标签: c# list class


【解决方案1】:

您可以按订单号分组,并加入同一组内的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()
              }

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

类 FinalOrder { 公共字符串订单号; 公共列表 idList ; }

然后:

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

【讨论】:

    猜你喜欢
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多