【发布时间】:2020-11-19 17:08:49
【问题描述】:
我有以下 linq 表达式将用户参数与 Max(EndDate) 字段进行比较?。我有多个 EndDate,但我想得到最后一个。
这里是 产品1
EndDate
2018-09-30 23:59:59.000
2019-09-30 23:59:59.000
产品 2
EndDate
2019-09-30 23:59:59.000
2019-12-31 23:59:59.000
当用户输入 09/2019 时,我只需要返回产品 1,因为 Max(EndDate) == 用户输入的值是 09/2009,格式为 MM/yyyy,目前它同时显示产品 1 和产品 2 .
在我的模型中,我将 checkBillingMonth 作为布尔值
public bool checkBillingMonth { get; set; }
这里我的 linq 表达式看起来像这样,但它同时返回 prodcut 1 和 product 2
var billingProductList = Context.Product.AsNoTracking()
.Select(p => new ProductDTO
{
checkBillingMonth = p.Billing
.Any(b => b.EndDate.Month == request.FromDate.Month &&
b.EndDate.Year == request.FromDate.Year)
}).ToList();
如何修改上述 linq 表达式以获取 Max(EndDate) 并与 request.FromDate 进行比较?
【问题讨论】:
-
您将 Linq-to-Entities 与 Linq-to-Objects 混合使用 - 这可能会给您带来次优查询,可能会将整个表加载到内存中。
-
此外,您发布的代码语法无效 - 您缺少大括号和点。
-
ProductDTO代表什么? (为什么它有一个名为checkBillingMonth的属性?这是一个很奇怪的领域模型……)
标签: c# asp.net asp.net-mvc linq