私が持っているいくつかのSQLをいくつかのlinqに変換しようとしていますが、問題があります。
MfrID、CatID、Count と呼ぶ 3 つの列を持つテーブルがあります。
いくつかのメソッドに CatID のリストを与えることができるようにしたいのですが、それはテーブルを通過し、そのリストに CatID を含むすべての MfrID とカウントを見つけ、mfrID が等しい場所でカウントを合計して、テーブルを並べ替えます。新しい TotalCounts によって、上位 X 件の結果を返します。
これはコードで説明するのが一番だと思います。これは私が解決しようとしているサンプルテストです
[TestMethod]
public void tempFiguringOutLinqQuery()
{
//some example data of what a sql table could look like
var sampleData = new []
{
new {MfrId = 1, CatId = 1, MfrCount = 3},
new {MfrId = 1, CatId = 2, MfrCount = 1},
new {MfrId = 5, CatId = 1, MfrCount = 2},
new {MfrId = 5, CatId = 6, MfrCount = 20},
new {MfrId = 3, CatId = 5, MfrCount = 14},
new {MfrId = 3, CatId = 2, MfrCount = 7},
new {MfrId = 3, CatId = 1, MfrCount = 9},
new {MfrId = 2, CatId = 1, MfrCount = 1}
}.ToList();
var catList = new List<int> {1, 2};
//where CatIDList.Contains(1 or 2), Add MfrCount where MfrIds are equal, then take the top 3 results ordered by mfrCountDescending
//ughhhhh
var results = sampleData.Where(w => catList.Contains(w.CatId)).GroupBy(g => g.MfrCount);
//expected results
// { MfrId = 3, MfrCount = 16 }
// { MfrId = 1, MfrCount = 4 }
// { MfrId = 5, MfrCount = 2 }
Assert.Inconclusive();
}