我知道这是 SO 的副本,但我不知道如何在我的特定代码中使用 contains 运算符:
我在数据库中有 5 个预订:
ID, Booking, Pren, ReservationCode
1, 访问这里, 1, 1000A
2, 访问这里, 1, 1000A
3, 访问这里, 1, 1000A
4, VisitThere, 2, 2000A
5, VisitThere, 2, 2000A
public int SpecialDelete(DataContext db, IEnumerable<BookingType> bookings) {
var rescodes = (from b in bookings
select b).Distinct().ToArray();
// Code Breaks here
IEnumerable<BookingType> bookingsToDelete = db.GetTable<BookingType>().Where(b => bookings.Any(p => p.Pren == b.Pren && p.ReservationCode == b.ReservationCode));
int deleted = bookingsToDelete.Count();
db.GetTable<BookingType>().DeleteAllOnSubmit(bookingsToDelete);
db.SubmitChanges();
return deleted;
}
当我将第一条记录传递给此方法(1、VisitHere、1、1000A)时,我希望它检索 id 1、2 和 3,而不是 4 和 5。
我可以通过匹配 Pren 和 ReservationCode 来做到这一点。
当 .Any 和 .All 运营商抛出上述异常时,我该怎么做?
注意:该方法必须接受预订列表,因为参数将始终是传递给该方法的多个预订,我仅以单个预订为例。
编辑:我基本上需要 LINQ2SQL 来生成一堆这样的 SQL 语句(假设我想删除数据库中的所有记录):
DELETE
FROM Bookings b
WHERE b.ReservationCode = '1000A' AND b.Pren = 1
DELETE
FROM Bookings b
WHERE b.ReservationCode = '2000A' AND b.Pren = 2