我有一个对象列表,该列表具有可用于将对象分成对的属性。我事先知道每个对象都是一对的一部分。
下面是一个例子来说明这种情况:
我有一个单鞋清单,我想把它们分成几双。
假设我的清单如下:
List<Shoe> shoes = new List<Shoe>();
shoes.Add(new Shoe { Id = 19, Brand = "Nike", LeftOrRight = LeftOrRight.L });
shoes.Add(new Shoe { Id = 29, Brand = "Nike", LeftOrRight = LeftOrRight.R });
shoes.Add(new Shoe { Id = 11, Brand = "Nike", LeftOrRight = LeftOrRight.L });
shoes.Add(new Shoe { Id = 60, Brand = "Nike", LeftOrRight = LeftOrRight.R });
shoes.Add(new Shoe { Id = 65, Brand = "Asics", LeftOrRight = LeftOrRight.L });
shoes.Add(new Shoe { Id = 82, Brand = "Asics", LeftOrRight = LeftOrRight.R });
我想将这些鞋子成对输出,如下所示:
一对: ID:19,品牌:耐克,左或右:L ID:29,品牌:耐克,左或右:R 一对: ID:11,品牌:耐克,左或右:L ID:60,品牌:耐克,左或右:R 一对: ID:65,品牌:Asics,左或右:L ID:82,品牌:Asics,左或右:R
请注意,单只鞋只能作为单双的一部分存在。
我尝试使用以下代码对鞋子进行分组,但显然缺少配对:
var pairsByBrand = shoes.GroupBy(s => s.Brand);
foreach (var group in pairsByBrand)
{
Console.WriteLine("Pair:");
foreach (var shoe in group)
{
Console.WriteLine(shoe);
}
Console.WriteLine();
}
可以使用哪些语句将这些项目分组?