c# - 在 linq 查询中获取计数

标签 c# linq lambda

我想在 linq 查询中获取计数,它可以正常工作,无需比较 where 条件中的日期,但在比较日期后它会出现异常。

public static IList GetAllCategoryData()
{
     using (var objEntity = new BlueCouponEntities())
     {
       return (from TBL in objEntity.CategoryMasters.AsEnumerable()
                 let IIT = TBL.CategoryImageTransactions
                 select new
                 {
                 TBL.CategoryID,
                 TBL.CategoryName,
                 CategoryCount = objEntity.OfferCategoryMasters.Where(Lg => Lg.CategoryID == TBL.CategoryID && Lg.OfferMaster.EndDate > DateTime.Now.Date).Count(),
                 }
             ).ToList();
     }
}

错误是:指定的类型成员;Date; LINQ to Entities 不支持。仅支持初始值设定项、实体成员和实体导航属性。

最佳答案

您必须使用EntityFunctions.TruncateTime来获取DateTime的日期部分

using (var objEntity = new BlueCouponEntities())
{
    return (from TBL in objEntity.CategoryMasters.AsEnumerable()
                 let IIT = TBL.CategoryImageTransactions
                 select new
                 {
                 TBL.CategoryID,
                 TBL.CategoryName,
                 CategoryCount = objEntity.OfferCategoryMasters.Where(Lg => Lg.CategoryID == TBL.CategoryID && Lg.OfferMaster.EndDate > EntityFunctions.TruncateTime(DateTime.Now)).Count(),
                 }
             ).ToList();
}

由于 DateTime.Now 目前是常量,您也可以这样写

 using (var objEntity = new BlueCouponEntities())
 {
     DateTime now = DateTime.Now.Date;
     return (from TBL in objEntity.CategoryMasters.AsEnumerable()
                 let IIT = TBL.CategoryImageTransactions
                 select new
                 {
                 TBL.CategoryID,
                 TBL.CategoryName,
                 CategoryCount = objEntity.OfferCategoryMasters.Where(Lg => Lg.CategoryID == TBL.CategoryID && Lg.OfferMaster.EndDate > now).Count(),
                 }
             ).ToList();   
}

关于c# - 在 linq 查询中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38263877/

相关文章:

c# - 异步实现文件上传控制时,UpdateProgress 和触发器部分在更新面板中不起作用

c# - 如何在 C# 的富文本框中将文本添加到用户光标的位置?

c# - 从串口读取数据

C# 在注入(inject)第一个参数的给定方法上创建 lambda

c# - 错误 - 403 禁止 - Microsoft-Azure-Application-Gateway/v2

c# - 当结果为空时 LINQ 返回什么

c# - LINQ:获取不在记录中的项目 - C#

c# - 将 Linq-to-SQL 中的计算属性映射到实际 SQL 语句

java - 检查映射中的键是否与Java中的List内容匹配

lambda - 避免由于冗余转换而导致 lambda 表达式中出现代码分析 CA1800 错误