2017-05-08 123 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,但发现在涉及连接时查询语法更好。 –