gpt4 book ai didi

c# - LINQ 中的日期范围重叠问题

转载 作者:行者123 更新时间:2023-11-30 16:22:47 34 4
gpt4 key购买 nike

表中特定记录的给定日期范围说特定字段“名称”

如果有人试图在之前的日期范围内插入该名称,则不应允许。

我在这里试过一些代码看看这个......

if (dataContext.TableAs.Where(
x => x.EndDate > StartDate &&
x.Name == Name).Count() == 0)
{
//insert record
}

但并非每次都成功。

任何人都可以建议我在这里遗漏了什么吗?

我已经在 SQL 中尝试了以下查询,如何在 LINQ 中将其用于上述代码

SELECT COUNT(*) FROM TableA WHERE ('2012-04-02' between StartDate and EndDate or '2012-08-28' 
between StartDate and EndDate or StartDate between '2012-04-02' and '2012-08-28' or EndDatebetween '2012-04-02' and '2012-08-28' ) and Name='Test'

最佳答案

试试这个;

if (dataContext.TableAs
.Where(x => x.Name == Name)
.Max(x => x.EndDate) < StartDate)

编辑 - 对于问题的第二部分

DateTime Date1 = new DateTime("2012-04-02");
DateTime Date2 = new DateTime("2012-08-28");

var query = (dataContext.TableAs
.Where(x => x.Name == "Test")
.Where(x => (x.StartDate >= Date1 && Date1 <= x.EndDate)
|| (x.StartDate >= Date2 && Date2 <= x.EndDate)
|| (Date1 >= x.StartDate && x.StartDate <= Date2)
|| (Date1 >= x.EndDate && x.EndDate <= Date2))).Count();

关于c# - LINQ 中的日期范围重叠问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12175466/

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