2017-05-08 121 views
1

我有兩個表CarsBookings,我希望從Bookings表中返回基於carld的Cars表中的startdate和enddate。 這裏是我的表LINQ和連接?

汽車

ID   Make   Model   Size 
----------- --------------- --------------- --------------- 
1   BMW    5Series   Medium 
2   Dacia   Duster   Large 
3   Ford   Mustang   Large 

預訂

ID   CarID  StartDate EndDate 
----------- ----------- ---------- ---------- 
1   1   2017-02-01 2011-04-05 
2   1   2017-05-11 2011-09-15 
3   1   2017-09-09 2012-12-15 
4   1   2017-07-12 2017-11-14 
5   2   2017-01-16 2017-08-28 

我是想這一點,但不斷收到錯誤,我不知道如何着手

string query3 = from c in db.Cars 
       join b in db.Bookings on c.ID equals b.CarID 
       select new { b.StartDate ,b.EndDate}.ToString(); 
+1

[LINQ to SQL中的內連接的語法是什麼?](http://stackoverflow.com/questions/37324/what-is-the-syntax-for-an-inner-join- in-linq-to-sql) – itsme86

+0

如果這打到一個數據庫,你使用哪個LINQ provider/ORM?如果您使用EF或LINQ to SQL,則不需要手動加入,只需在聲明外鍵時將(。。)集合在集合中即可。 –

回答

1

我相信你想要這樣的事情:

var query3 = from c in db.Cars 
join b in db.Bookings on c.ID equals b.CarID 
select new { b.StartDate, b.EndDate}; 

var results = query3.ToList(); // ToList executes the query on the database 
// results will be a List<a'> where a'> DateTime StartDate, DateTime EndDate 
+0

是的,謝謝你,一個匿名類型是需要的! –

1

從我所瞭解的情況來看,您希望根據給定的車牌號得到開始日期和結束日期嗎?

試試這個:

var carId = 1; 
var result = db.Bookings 
    .Where(booking => booking.CarID == carId) 
    .Select(b => new { StartDate = b.StartDate, EndDate = b.EndDate }) 
    .ToList(); 

結果對象擁有所有的名單開始,汽車ID 1結束日期如果沒有找到預訂,結果將是空的。

+0

謝謝,多數民衆贊成在偉大的,我不喜歡lambda,但:P –

+0

這是一個推動LINQ版本。我發現它更清晰,但沒有難過的感覺:) – rmpt

+0

這是查詢語法與方法語法。我更喜歡Method Syntax,但發現在涉及連接時查詢語法更好。 –