Linq 分组和计数每个组中某个参数的出现次数

Linq 分组和计数每个组中某个参数的出现次数,linq,sqlite,group-by,linqpad,Linq,Sqlite,Group By,Linqpad,我正在摆弄LINQPad,我确信这个问题已经被问到了,但我已经挣扎和寻找了很长一段时间 我有这样的收藏: Age Material --- -------- 3 Steel 3 Steel 3 PVC 4 Steel 4 PVC {Mat = Steel, [(Age = 3, Count = 2), (Age = 4, Count = 1)]} {Mat = PVC, [(Age = 3, Count = 1), (Age = 4

我正在摆弄LINQPad,我确信这个问题已经被问到了,但我已经挣扎和寻找了很长一段时间

我有这样的收藏:

Age  Material
---  --------
3    Steel
3    Steel
3    PVC
4    Steel
4    PVC
{Mat = Steel,
   [(Age = 3, Count = 2),
    (Age = 4, Count = 1)]}
{Mat = PVC,
   [(Age = 3, Count = 1),
    (Age = 4, Count = 1)]}
我想先按材料进行分组,然后计算每个材料组中每个年龄段的发生率,结果如下:

Age  Material
---  --------
3    Steel
3    Steel
3    PVC
4    Steel
4    PVC
{Mat = Steel,
   [(Age = 3, Count = 2),
    (Age = 4, Count = 1)]}
{Mat = PVC,
   [(Age = 3, Count = 1),
    (Age = 4, Count = 1)]}
我知道这与嵌套组有关,但我不能正确地理解它。我一直在尝试这样的东西(只是没有问号),但我不知道如何找到每组中的项目:

var matGroups = from line in Pipelines                              
                group line by line.Material into matGroup
                from ???? in ???
                group ???? by ???.Age;
如果相关的话,我查询的数据存储在SQLite中

更新

下面的代码为我获取了所需的数据。但是,如果可能的话,我仍然想知道在单个查询中执行此操作的正确方法

var materials = from p in Pipelines
                group p by p.Material into matGroup
                select matGroup.Key;

foreach (string material in materials)
{
    var ages = from p in Pipelines
               where p.Material == material
               group p by p.Age into ageGroup
               select new {Age = ageGroup.Key, Count = ageGroup.Count()};

    ages.Dump(material + " Pipelines");
}

它只是按年龄和材料进行分组:

from p in Pipelines
group p by new { p.Material, p.Age } into g
orderby g.Key.Material, g.Key.Age
select new { g.Key.Material, g.Key.Age, Count = g.Count () }

我从未使用过LINQ,但您需要的SQL命令很简单:
select material,age,count(*)from pipelines group by material,age也许这会有帮助。。。