使用 C# 应用程序选择“非重复和计数”

本文关键字:应用程序 选择 使用 | 更新日期: 2023-09-27 18:15:18

我有两个sql查询,我已经测试了两个查询是否正常工作。我需要转换为下拉列表的 Linq 查询(MVC C#(。有没有办法让Linq查询只显示日期而没有时间?例如 仅日期 2015-09-30

  SELECT DISTINCT DelDate  from Location where    
  DStatus = 'true' and FState = 'true' 

输出

2015-09-30 14:06:37.000
2015-09-30 14:14:09.547

我的第二个查询,我只需要转换linq列表

SELECT COUNT(DISTINCT CouName) AS StatusCount  FROM Location  where   
DlStatus = 'true' and FState = 'true'  and CouName = 'Alan'

使用 C# 应用程序选择“非重复和计数”

根据您问题中的SQL,等效Linq将是

从 DStatus = "true" 和 FState = "true" 的位置选择不同的 DelDate

var delDates = Location
  .Where(l => l.DStatus == "true" && l.FState == "true")
  .Select(f => f.DelDate)
  .Distinct();

选择 COUNT(DISTINCT COUNAME( 作为 StatusCount FROM 位置,其中 DlStatus = 'true' 和 FState = 'true' 和 CouName = 'Alan'

var statusCount = Location
  .Where(l => l.DStatus == "true" && l.FState == "true" && l.CouName == "Alan")
  .Select(f => f.CouName)
  .Distinct()
  .Count();

db.Location.Where(x=>x.DStatus == "true" && x.FState == "true")
           .Select(y=>y.DelDate.Value.ToString("yyyy-MM-dd")).Distinct().ToList();

而这个

    db.Location.Where(x=>x.DStatus == "true" && x.FState == "true" && x.CouName == "Alan")
               .Select(y=>y.CouName).Distinct().Count();

对于第一个查询仅获取日期,您可以在选择时截断时间.Date将仅获取日期并删除时间部分。

var dates = Location.Where(l => l.DStatus && l.FState)
                    .Select(f => f.DelDate.Date)
                    .Distinct();

对于第二个查询

var count = Location.Where(l => l.DStatus && l.FState && l.CouName == "Alan")
                    .Select(f => f.CouName)
                    .Distinct()
                    .Count();
相关文章: