c# - 我应该在数据库中还是在代码中应用计数?

标签 c# entity-framework asp.net-core asp.net-core-mvc entity-framework-core

我有以下代码,我试图通过各种匹配获取同一 dataset 中的行数。

我的问题是我是否应该使用 IEnumerable 或通过从数据库查询 IQueryable 来获取 C# 代码中的计数?

哪个更高效,多个数据库事务还是IEnumerable过滤和计数?

public List<Tuple<string, int>> CalismaVeIzinleriHesapla(long personelId, DateTime baslangic, DateTime bitis)
{
    var hesaplamalar = new List<Tuple<string, int>>();
    var puantajList = puantajlar.Where(p => p.PersonelId == personelId && (p.Tarih >= baslangic && p.Tarih <= bitis));

    var haftaTatili = puantajList.Where(p => p.Secenek.Deger == "Ht").Count();
    var resmiTatil = puantajList.Where(p => p.Secenek.Deger == "Rt").Count();
    var yillikIzin = puantajList.Where(p => p.Secenek.Deger == "Yi").Count();
    var odenecekRapor = puantajList.Where(p => p.Secenek.Deger == "R+").Count();
    var dogumIzni = puantajList.Where(p => p.Secenek.Deger == "Di").Count();
    var olumIzni = puantajList.Where(p => p.Secenek.Deger == "Öi").Count();
    var evlilikIzni = puantajList.Where(p => p.Secenek.Deger == "Ei").Count();
    var odenmeyecekRapor = puantajList.Where(p => p.Secenek.Deger == "R-").Count();
    var ucretsizIzin = puantajList.Where(p => p.Secenek.Deger == "Üi").Count();
    var devamsizlik = puantajList.Where(p => p.Secenek.Deger == "D").Count(); 

    return hesaplamalar;
}

最佳答案

至于你的情况,在数据库中查询和计数效率更高。 像这样的事情会很有效。

puantajlar
  .Where(p => p.PersonelId == personelId && (p.Tarih >= baslangic && p.Tarih <= bitis))
  .GroupBy(x => x.Secenek.Deger)
  .Select(group => new { group.Key, Count = group.Count()  })

关于c# - 我应该在数据库中还是在代码中应用计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648586/

相关文章:

c# - 如何在 ASP.NET 5 Beta 8 控制台应用程序中使用 EF7 并在没有 startup.cs 的情况下连接到 SQL Server?

c# - 应用程序在执行过程中没有内存

c# - 无法创建 Amazon Web Services (AWS) 凭据对象

c# - 处理 EntityFramework Core 中的重复键违规

forms - symfony2 表单中找不到实体错误

c# - 将Asp.Net Core单项目App拆分为多个项目-类型与xxx中导入的类型冲突使用xxx中定义的类型

c# - 原始列表的浅克隆列表中的项目被清除会发生什么

c# - 在 C# 中模拟 linux openssl 命令

entity-framework - 如何在 Entity Framework 通用插入方法中返回插入记录的 ID?

c# - 使用 ASP.NET Core 下载文件