检查 C# 7 中 Valuetuple 列表中的单个项目

Check individual items from a list of Valuetuple in c# 7

请考虑以下 ValueTuple C#7 列表

List<(double prices, int matches)> myList = new List<(double, int)>();

                    myList.Add((100, 9));  

                    myList.Add((100.50 , 12)); 

我可以在 myList、myList.Max、myList.Average 等中执行 Foreach var i,它会 return 两种类型的 ValueTuple。

但是,我如何检查 return 只有价格 and/or 匹配的值?你能post举个例子吗?

您可以只使用 Select(x => x.prices)

static void Main(string[] args)
{
    List<(double prices, int matches)> myList = new List<(double, int)>();
    myList.Add((100, 9));
    myList.Add((100.50, 12));

    var prices = myList.Select(x => x.prices);
    var matches = myList.Select(x => x.matches);

    Console.WriteLine("prices:");
    foreach (var item in prices)
        Console.WriteLine(item);

    Console.WriteLine("\nmatches:");
    foreach (var item in matches)
        Console.WriteLine(item);

    Console.Read();
}

输出:

prices:
100
100.5

matches:
9
12

模式匹配可用于解构 for-each 语句中的元组

List<(double prices, int matches)> myList = new List<(double, int)>();
myList.Add((100, 9));
myList.Add((100.50, 12));

foreach (var (price, match) in myList)
{
    Console.WriteLine($"Price: {price}");
    Console.WriteLine($"Match: {match}");
}

我更喜欢这种方法:

var _someCollection = new List<(int Id, string Name)> { (123, "abc") };
...
_someCollection.ForEach(_ => {
   _.Id = 1;
   _.Name = "a";
});

在这种情况下,您不需要在简单的 foreach 语句中根据需要重新定义名称,如果重命名不同,这可能会导致错误并且更难调试代码。