これが SO で重複していることはわかっていますが、特定のコードで contains 演算子を使用する方法がわかりません。
データベースには 5 つの予約があります。
ID、Booking、Pren、ReservationCode
1, VisitHere, 1, 1000A
2、VisitHere、1、1000A
3、VisitHere、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 演算子が上記の例外をスローしているため、これを行うにはどうすればよいですか?
注:引数は常にメソッドに渡される複数の予約であるため、メソッドは予約のリストを受け入れる必要があります。例として単一の予約を使用しました。
編集:基本的に、次のような一連の SQL ステートメントを生成するには LINQ2SQL が必要です (たとえば、DB 内のすべてのレコードを削除したいとします):
DELETE
FROM Bookings b
WHERE b.ReservationCode = '1000A' AND b.Pren = 1
DELETE
FROM Bookings b
WHERE b.ReservationCode = '2000A' AND b.Pren = 2