2

このSQLクエリからのlinqクエリは何ですか

SELECT 
      sum(IIF(jenis = 'primer',1,0)) as sum_primer, 
      sum(IIF(jenis = 'sekunder',1,0)) as sum_sekunder
FROM cooperations

101のLinqサンプルから同じ例を検索してみてくださいが、手がかりがありません

更新 だから、私は自分のC#でこのクエリを使用しています

var query = (from c in db_cooperations.cooperations
              group c by c.jenis into g
              select
              (new
              {
                sum_primer = g.Count(c => c.jenis == "primer"),
                sum_sekunder = g.Count(c => c.jenis == "sekunder")
              })).ToArray();

出力は

 sum_primer   sum_sekunder
    0             0 
    0             52
   250            0
    0             0
    0             0

だから、どうすればゼロ値を削​​除して、1行だけ返すことができますか

4

2 に答える 2

5
var sum_primer = cooperations.Count(c => c.jenis == "primer");
var sum_secunder = cooperations.Count(c => c.jenis == "sekunder");

またはデータベースへの単一のクエリで

var query = (from c in cooperations
             where c.jenis == "primer" || c.jenis == "sekunder"
             group c by c.jenis
             select new { Jenis = g.Key, Count = g.Count() }
            ).ToDictionary(x => x.Jenis, x => x.Count);

var result = new {
   sum_primer = query.ContainsKey("primer") ? query["primer"] : 0,
   sum_sekunder = query.ContainsKey("sekunder") ? query["sekunder"] : 0
};

このSQLが生成されます(2行のみが返されます)。

SELECT COUNT(*) AS [Count], [t0].[jenis] AS [Jenis]
FROM [cooperations] AS [t0]
WHERE ([t0].[jenis] = 'sekunder') OR ([t0].[jenis] = 'primer')
GROUP BY [t0].[jenis]
于 2013-01-29T07:10:12.260 に答える
5

あなたはこのようにそれを達成することができます、以下はあなたに条件ごとのアイテムの数を提供します

var data = db.CoOperations.
           GroupBy(x=>x.jenis )
           .select (new {
                sum_primer = g.Count(c => c.jenis == "primer"),
                sum_sekunder = g.Count(c => c.jenis == "sekunder"),
            });
于 2013-01-29T07:11:12.670 に答える