【发布时间】:2023-03-07 09:42:01
【问题描述】:
我有一个包含 StartDate 和 EndDate 属性的 DateRange 对象列表。我需要从我的数据库中的表中选择所有行,这些行的 DateTime 字段属于这些 DateRanges 中的任何一个。所以我想做这样的事情:
// Using an IQueryable<DateRange> called dateRanges
var tests = from test in dbContext.Tests
where dateRanges.Any(range => range.StartDate <= test.Date && range.EndDate >= test.Date)
select test
这给了我一个错误,因为 DateRange 不是原始类型,因此 LINQ to SQL 无法使用它。有没有其他方法可以做我在这里想做的事情?几个小时以来一直在谷歌搜索和尝试不同的事情,我觉得我很接近但不能完全到达那里。提前致谢。
【问题讨论】:
-
我对@987654322@ 不太满意,但你能比较一下他们的
.Ticks的价值吗? -
好吧,问题不在于比较 DateTime 值,而是 DateRange 不是原始类型,因此它不能被转换为 SQL 可以使用的任何内容以使操作发生服务器端。
-
你可以建立一个 TSQL 查询来代替吗?
-
@Malleus 对我来说有点奇怪,可以试试
dateRanges.Any(x=>true)吗? -
您的 StartDate 和 EndDate 属性是什么类型的?
标签: c# linq linq-to-sql linq-to-entities