gpt4 book ai didi

c# - 如何在 Entity Framework 中查找具有指定日期范围列表的日期?

转载 作者:行者123 更新时间:2023-11-30 21:49:52 24 4
gpt4 key购买 nike

我创建了一个包含日期范围的类的 IEnumerable。该类看起来像这样:

public class Range<T>
where T: struct
{
public T Start { get; set; }
public T End { get; set; }
}

我想查找我的集合中日期列在任何指定日期范围内的所有记录。这是我的尝试:

deals = deals.Where(
deal =>
criteria.DateRanges.Any(
dt =>
deal.CloseDate >= dt.Start &&
deal.CloseDate < dt.End.Value.AddDays(1)));

我认为这会引发错误,因为 EF 不知道如何将 criteria.DateRanges.Any() 转换为 SQL。那么,您将如何编写此代码来查找与任何日期范围匹配的日期?

最佳答案

您可以使用 LinqKit为此:

var expr = PredicateBuilder.False<Deal>();
foreach(var range in criteria.DateRanges)
expr = expr.Or(d => dt.CloseDate >= range.Start && dt.CloseDate < range.End);
deals = deals.AsExpandable().Where(expr);

另一种选择是使用 Expression Trees但这对于您要尝试做的事情来说似乎有点矫枉过正。

关于c# - 如何在 Entity Framework 中查找具有指定日期范围列表的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36703908/

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