LINQ和加入?

时间:2017-05-08 23:22:55

标签: c# linq

我有两个表CarsBookings,我希望根据Bookings表中的carId从Cars表返回startdate和enddate。 这是我的桌子

汽车

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();

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

根据我的理解,您希望根据给定的车辆ID获取开始日期和结束日期吗?

试试这个:

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

结果对象有一个car id 1的所有开始日期和结束日期的列表。如果没有找到预订,结果将为空。