【问题标题】:C#: using foreach and array element to combine 2 lists [duplicate]C#:使用foreach和数组元素组合2个列表[重复]
【发布时间】:2021-06-10 19:17:37
【问题描述】:

我有 2 个来自美国和加利福尼亚的数据库列表。

List<Order> caList = DB.GetOrderData(Countries.CA);
List<Order> usList = DB.GetOrdersData(Countries.US);

我想使用带有 foreach 循环的数组元素“US”和“CA”将两个列表迭代为 1 个列表。

string[] countries = {'US','CA'};
foreach(){
}

我能够使用 uslist.AddRange(calist) 将 2 个列表合并为 1 个列表,并且可以正常工作。

同事告诉我这是使用foreach 的另一种方法。我是 IT 和 C# 的新手,我不知道从哪里开始,也想不出解决方案,所以请其他专家程序员帮助扩展我的 C# 知识。谢谢。

【问题讨论】:

  • .Concat......
  • 各位专家已多次回答:How do you concatenate Lists in C#?
  • @Ňɏssa:可能没有一路看我的帖子。 “我能够使用 uslist.AddRange(calist) 将 2 个列表合并为 1 个列表”并且它有效。我只是想学习其他方法,因为解决这个问题的方法不止一种。

标签: c# arrays list foreach


【解决方案1】:

使用Enum.Parse 将字符串转换为枚举。使用SelectMany 将列表放入单个可枚举流中,使用ToList 创建列表。

string[] countries = {'US','CA'};
var combinedList = countries.SelectMany
    ( 
        x => DB.GetOrderData(Enum.Parse<Countries>(x))
    )
    .ToList();

如果您更愿意使用foreach,请按照以下方法操作:

string[] countries = {'US','CA'};
var combinedList = new List<Order>();
foreach (var country in countries)
{
    var countryCode = Enum.Parse<Countries>(country);
    combinedList.AddRange(DB.GetOrderData(countryCode));
}

或者

string[] countries = {'US','CA'};
var combinedList = new List<Order>();
foreach (var country in countries)
{
    var countryCode = Enum.Parse<Countries>(country);
    var orders = DB.GetOrderData(countryCode);
    foreach (var order in orders)
    {
        combinedList.Add(order);
    }
}

【讨论】:

  • 谢谢你的回答,约翰。这对我来说是全新的,它肯定会帮助我开始。有没有办法在这上面使用foreach
  • @JosephK。我添加了其他示例来演示 foreach 的用法。
猜你喜欢
  • 2023-01-18
  • 2018-11-03
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 2023-02-19
相关资源
最近更新 更多