为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 foreach 循环的输出合并为一个?

如何将 foreach 循环的输出合并为一个?

C#
慕运维8079593 2022-12-04 11:05:16
代码就像主项,而IdSub就像主项的子项。1个主项可能有多个子项。我的代码后面有这个 foreach 代码。 foreach (var subID in Ids)     {          Display display = new Display();           display.Code = item.Code;           display.Name = item.Name;           display.Price = item.Price;           display.IdSub = subID ;           DisplayList.Add(display);    }由于ID有 3 个subID,所以输出有 3 行数据。我想要的是因为Code、Name、Price与主要项目相同。我希望它与多个IdSub合并为 1 行。我如何合并/合并这些数据?
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

然后,您需要将类IdSub上的字段/属性更改Display为整数数组:(int[]您可以采用不同的方式,但最好采用 IMO)。


然后你可以省略循环:


Display display = new Display()

{

  Code = item.Code,

  Name = item.Name,

  Price = item.Price,

  IdSub = Ids //if Ids is array of ints, else you need to use ToArray() method

}


DisplayList.Add(display);

要显示IdSubwith 绑定的数据,您需要在您的Display类上定义额外的属性:


public string IdSubDisplay

{

  get

  {

    return string.Join(",", IdSub);

  }

  set { }

}

并绑定到IdSubDisplay.


查看完整回答
反对 回复 2022-12-04
?
呼如林

TA贡献1798条经验 获得超3个赞

您有多种选择可以做到这一点。这是最简单的之一:


foreach (var id in itemIds)

{

    if (DisplayList.Any(x=> x.Code == item.Code && x.Name == item.Name && x.Price == item.Price))

    {

        var display = DisplayList.Single(x=> x.Code == item.Code && x.Name == item.Name && x.Price == item.Price);

        display.IdSubs.Add(id);//change IdSub to IdSub, as a list of its previous type

    }

    else

    {

        Display display = new Display();

        display.Code = item.Code;

        display.Name = item.Name;

        display.Price = item.Price;

        display.IdSubs = new List<int>();//Assumed that IdSub was int

        DisplayList.Add(display);

    }

}


查看完整回答
反对 回复 2022-12-04
  • 2 回答
  • 0 关注
  • 128 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信