gpt4 book ai didi

c# - LINQ 中的条件和

转载 作者:行者123 更新时间:2023-11-30 19:18:00 24 4
gpt4 key购买 nike

这个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

那么,我如何删除零值,并只返回一行

最佳答案

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(并且只会返回两行):

SELECT COUNT(*) AS [Count], [t0].[jenis] AS [Jenis]
FROM [cooperations] AS [t0]
WHERE ([t0].[jenis] = 'sekunder') OR ([t0].[jenis] = 'primer')
GROUP BY [t0].[jenis]

关于c# - LINQ 中的条件和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14577435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com