检查 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 语句中根据需要重新定义名称,如果重命名不同,这可能会导致错误并且更难调试代码。
请考虑以下 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 语句中根据需要重新定义名称,如果重命名不同,这可能会导致错误并且更难调试代码。