5

ホテル予約プロジェクトに日付によるフィルターを実装しようとしています。

このSQLコードを linqに変換するのを手伝ってくれませんか。

SELECT r.*
FROM Room r LEFT JOIN Reservation v ON r.RoomID = v.RoomID
AND NOT (@StartDate >= Date_Check_Out OR @EndDate <= Date_Check_In)
AND v.cancel = 0
WHERE v.ReservationID IS NULL
4

3 に答える 3

10

SQL を Linq に変換する優れたツールの 1 つ: Linqer

このクエリを試してください

var q = (from r in Room 
            join v in Reservation on r.RoomID equals v.RoomID  into outer
            from o in outer.DefaultIfEmpty()
            where !(o.Date_Check_Out<= startdate || o.Date_Check_In>=endDate)
                  && v.cancel == 0 && v.ReservationID == null 
            select r);

これもチェックしてください:

SQL to LINQ ツール の既存のスレッドを参照してください。

手動で行う場合は、Linqpadが便利です。

あなたも見たい:SQL to LINQ(Visual Representation)グラフィカル表現によるいくつかの良い例...

于 2012-05-04T07:29:44.937 に答える
2

何かのようなもの:

DateTime startDate, EndDate;

var bookings = from r in Rooms
               join v in Reservation
                   on r.RoomID equals v.RoomID into RoomReservation 
                  from v in RoomReservation.DefaultIfEmpty()
               where
               (Date_Check_Out < startDate || Date_Check_In > endDate)
               select r;
于 2012-05-04T07:32:54.967 に答える
1

多分このようなもの:

DateTime StartDate=DateTime.Now;
DateTime EndDate=DateTime.Now; 

var result= (
    from r in Room
    from v in Reservation
        .Where(a=>
            a.RoomID == r.RoomID
            && 
            !(
                StartDate>=a.Date_Check_Out ||
                EndDate <=a.Date_Check_In
            )
            && a.cancel==false
        ).DefaultIfEmpty()
    where v.ReservationID == null
    select r
    );
于 2012-05-04T07:43:58.730 に答える