我很难理解如何按一个键,然后按另一个键分组。我提供了一个简单的示例,说明了我正在做的分配工作,以期了解LINQ查询。
例如,假设我正在读取包含宠物信息的.CSV文件。我创建了一个Pets类和一个内存数组。
我曾尝试研究类似的示例,但是找不到一个清晰的示例:1.创建两个组2.使其中一个组处理重复项
class Pets {
public string name;
public string breed;
public string age;
public string shop;
}
Pets [] pets = new Pets[] {
new Pets {
name= columns[0],
breed = columns[1],
age = Convert.ToInt32(columns[2]),
shop = columns[3],
}
};
我试图按“品种优先”分组,然后按商店分组。我对代码进行了注释,以试图解释我的思考过程。
var puppygroups =
from p in pets
group p by p.breed into group1 // put all the breeds into one group
select new
{
pups = g1.Key, // breed key
Subgroups =
from pups in group1
where group1.Count() > 1 // where breed count is more than 1
group pups by pups.shop into group2 // put all the shops in group 2
select group2
};
foreach (var p in puppygroups)
{
Console.WriteLine(“Name {0}, Breed {1}, Shop{2}” p.name, p.breed, p.shop);
}
说我想将品种用作第一级密钥,将商店用作第二级密钥。我想在第二层(商店名称)中打印至少有2只宠物的组;
我想返回类似的内容:
漫游者,贵宾犬,PuppyPals
公主,贵宾犬,PuppyPals
如果我试图在程序中多次创建这些组,但仍未达到预期的效果,我将不胜感激。