私は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)]}
を
これはネストされたグループと関係がありますが、それは正しくできません。私は(唯一の疑問符なし)このようなものをしようとしてきたが、私は、各グループ内の項目を取得する方法がわからない:その関連場合
var matGroups = from line in Pipelines
group line by line.Material into matGroup
from ???? in ???
group ???? by ???.Age;
を、データストアは、私が照会していますSQLiteにあります。
UPDATE
次のコードは、私が欲しいデータを取得します。しかし、可能ならば、単一のクエリでこれを行う適切な方法を知りたいと思います。
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");
}
が、あなたがしたいSQLコマンドは単純です: 'パイプラインからの選択材料、年齢、COUNT(*)材料、年齢別にグループ化して、「多分それが助けになるだろう... – Sam