【问题标题】:Loop a list with a Tuple C#使用元组 C# 循环列表
【发布时间】:2020-03-06 11:26:25
【问题描述】:

我在 C# 中有一个名为 MyList 的列表:

List<Tuple<string, int, int>> MyList= new List<Tuple<string, int, int>>() 
        {
           Tuple.Create("Cars", 22, 3),
           Tuple.Create("Cars", 28, 5),
           Tuple.Create("Planes", 33, 6)
        };

我想按照我在上面填写的顺序遍历整个列表,并能够为每个列表项一个一个地获取值,例如Cars, 22, 3。我怎么做?我想我必须以某种方式使用ForEach

【问题讨论】:

  • 你通常会写一个循环来循环一个集合,是的。您尝试了哪些方法,哪些方法无效?
  • 循环确实是您所需要的!
  • 可以切换到命名元组,更清晰易读
  • 我知道我需要一个循环。但是我不知道怎么写。这就是我所做的: ´ MyList.ForEach(Tuple tuple) { };`
  • @KGB91 这不是一个循环。这是尝试使用带有不正确 lambda 语法的 ForEach 方法。 foreach(var ... in MyList){ ... } 是一个循环

标签: c# .net list tuples


【解决方案1】:

您可以使用简单的foreach 循环,Item1Item2Item3 表示具有相应类型的未命名元组项

foreach (var item in MyList)
{
    string name = item.Item1;
    int value = item.Item2;
    int something = item.Item3;
}

您也可以切换到 named tuples,它可从 C# 7 获得。它们更具可读性,并允许为元组项定义自定义名称并使用解构

var MyList = new List<(string name, int value, int someting)>()
{
    ("Cars", 22, 3),
    ("Cars", 28, 5),
    ("Planes", 33, 6)
};

foreach (var item in MyList)
{
    var name = item.name;
    var value = item.value;
}

【讨论】:

  • 它有效,但使用命名元组时我得到the type or namespace name 'ValueTuple' does not exist in the namespace 'System
  • @KGB91 它可从 C# 7 和 .NET 4.6.1 获得。你可以尝试安装System.ValueTuple 包,如果你没有从盒子里得到它
  • @KGB91,你可以使用我的回答,更简单。
  • 是的,但是用这段代码填充元组更容易:)
【解决方案2】:

这是一个易于理解且简单的解决方案,将为您提供帮助。
您可以使用for 循环。

  • 项目1 (string),
  • 项目2 (int),
  • 项目3 (int)

Tuple Items 在您放置它们的顺序和格式中。

下面的代码是loop

for (int i = 0; i < MyList.Count; i++)
{
     string item1 = MyList[i].Item1;
     int item2 = MyList[i].Item2;
     int item3 = MyList[i].Item3;
}

【讨论】:

    猜你喜欢
    • 2015-09-13
    • 2021-09-03
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 2015-03-16
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多