EF LINQ:如何从一个表中排除另一个表的值

时间:2011-02-21 09:30:39

标签: entity-framework

我有一张名为AnnualLeave的表,其中存储了预订假期的日期。 我有另一张名为BankHolidays的桌子,这张桌子提供的日期使得无法同时预订年假。 但有时会在BankHoliday表中添加额外日期,例如皇家婚礼。当添加新的银行假期时,我可以简单地删除当天的所有年假,但如果日期输入错误怎么办?我希望管理员能够更改该日期而不删除已经预订的年假。 所以我认为解决方案是将AnnualLeave日期保留在表中,但每个查询的AnnualLeave都应该排除BankHoliday日期。

在SQL中,这对于NOT IN子句或在关键字段上检查Null的左外连接是等同的。

问题是如何在EF4中执行此操作?

1 个答案:

答案 0 :(得分:2)

也许:

context.AnnualLeaves.Where(al => !context.BankHolidays.Any(bh => bh.Date == al.Date)).ToList();

这可能取决于您对EF的方法(Code First / POCO / Database First)。