.net 检查c#7中Valuetuple列表中的单个项目 请考虑下面的ValuePuple C<7 < /P> List myList=new List(); 添加((100,9)); 添加((100.50,12));

.net 检查c#7中Valuetuple列表中的单个项目 请考虑下面的ValuePuple C<7 < /P> List myList=new List(); 添加((100,9)); 添加((100.50,12));,.net,list,types,valuetuple,c#-7.3,.net,List,Types,Valuetuple,C# 7.3,我可以在myList、myList.Max、myList.Average等中执行每个var I,它将返回两种类型的ValueTuple 但是,如何检查并仅返回价格和/或匹配项的值?您可以发布示例吗?您可以使用Select(x=>x.prices) 模式匹配可用于解构for each语句中的元组 List<(double prices, int matches)> myList = new List<(double, int)>(); myList.Add((100, 9)

我可以在myList、myList.Max、myList.Average等中执行每个var I,它将返回两种类型的ValueTuple


但是,如何检查并仅返回价格和/或匹配项的值?您可以发布示例吗?

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


模式匹配可用于解构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}");
}
List myList=new List();
添加((100,9));
添加((100.50,12));
foreach(myList中的var(价格、匹配)
{
Console.WriteLine($“Price:{Price}”);
WriteLine($“匹配:{Match}”);
}

我更喜欢这种方法:

var _someCollection = new List<(int Id, string Name)> { (123, "abc") };
...
_someCollection.ForEach(_ => {
   _.Id = 1;
   _.Name = "a";
});
var\u someCollection=新列表{(123,“abc”)};
...
_someCollection.ForEach(=>{
_.Id=1;
_.Name=“a”;
});

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

非常感谢!!简单而强大!!如果不是在IEnumerable中返回“price”和“matches”,而是在一个新的列表中返回,那么如何做到这一点呢?是否可以直接执行此操作,或者需要选择以IEnumerable形式返回值,然后将其添加到列表中?
prices:
100
100.5

matches:
9
12
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";
});