gpt4 book ai didi

c# - 不与 linq to sql 之间

转载 作者:行者123 更新时间:2023-12-02 22:43:46 25 4
gpt4 key购买 nike

这是我的查询:

var model = (from p in entity.vehicule
join y in entity.indisponible on p.Matv equals y.idv
where p.agence.idgov == idv && (!(dd1 >= y.Dd && dd1 <= y.Df) || !(df1 >= y.Dd && df1 <= y.Df))
select p).ToList();

我尝试了很多方法来写这部分:

(!(dd1 >= y.Dd && dd1 <= y.Df) || !(df1 >= y.Dd && df1 <= y.Df))

这样(在sql中应该是这样):

(dd1 Not Between Date(y.dd) And Date(y.dF)) OR (df1 Not Between Date(y.dd) And Date(y.df))

dd1 is date (From), Df1 is date (to).

我想我在这里遗漏了一些东西:(

最佳答案

编辑 2:经过许多评论,希望这就是您想要的结果

public IList<Car> GetCarsAvailable(DateTime fromDate, DateTime toDate)
{
var result = from c in dataContext.Cars
where !c.Bookings.Any(b => (fromDate >= b.From && fromDate <= b.To) || (toDate >= b.From && toDate <= b.To))
select c;

return result.ToList();
}

编辑 1

如果我们稍微改变它,那么我们将检查最喜欢的日子,而不是检查生日。不要让我们假设一个人可以有多个最喜欢的日子,并且我们想要选择没有最喜欢的日子的每个人,即在 2 天内。让我们进一步写出我们的假设:

  • Richard 最喜欢的日子是 2012 年 5 月 5 日2012 年 9 月 10 日
  • Amy 最喜欢的日子是 2012 年 8 月 8 日2012 年 12 月 12 日
  • Matthews 最喜欢的日子是 2012 年 10 月 30 日

假设我们想要找到在 2012 年 5 月 1 日2012 年 9 月 1 日 之间没有最喜欢的一天的所有人;我们的结果输出应该只是 Matthew,我们可以这样写:

public IList<Person> GetPeopleWhoDontHaveAnyFavouriteDate(DateTime fromDate, DateTime toDate)
{
var result = from p in dataContext.People
where !p.FavouriteDates.Any(f => f.Date >= fromDate && f.Date <= toDate)
select p;

return result.ToList();
}

上面的语句是说,我们想要选择所有人,但前提是他们最喜欢的日期没有在两个日期之间。

或者我们可以说,让我们选择一个人,如果他们确实有一个范围之外的日期。所以假设我们想检查从 2012 年 5 月 1 日2012 年 11 月 1 日,那么我们的结果集现在是 RichardAmy,这可以像这样实现:

public IList<Person> GetPeopleWhoDontHaveFavouriteDate(DateTime fromDate, DateTime toDate)
{
var result = from p in dataContext.People
where p.FavouriteDates.Any(f => f.Date < fromDate || f.Date > toDate)
select p;

return result.ToList();
}

原创

我发现阅读您的缩写变量很棘手,所以我希望您不要介意,但我想我会写一个快速演示如何在两个日期之间执行“不在”之间

我认为您的思路是正确的。您可以通过以下几种方法来处理它。以下方法做同样的事情,但其中一个检查逆向。

public IList<Person> GetPeopleNotBornFromTo(DateTime fromDate, DateTime toDate)
{
var result = from p in dataContext.People
where p.DateOfBirth < fromDate || p.DateOfBirth > toDate
select p;

return result.ToList();
}

public IList<Person> GetPeopleNotBornFromTo2(DateTime fromDate, DateTime toDate)
{
var result = from p in dataContext.People
where !(p.DateOfBirth >= fromDate && p.DateOfBirth <= toDate)
select p;

return result.ToList();
}

关于c# - 不与 linq to sql 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351549/

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