2014-03-05 71 views
1

我正在使用ASP.NET並且有一個GridView,我想用兩個表中的數據填充。現在,我有以下查詢:使用LINQ從不同的表格中獲取逗號分隔的列表

var carListData = from x in db.cars 
        orderby x.carName 
        select new { x.carId, x.carName, locationIDs = string.Empty }; 
carList.DataBind(); 

現在,我想設置locationIDs是一個逗號分隔的字符串。我需要查找出售每輛車的所有位置。我有一個名爲db.locationCars的表,它有一個locationId列和一個carId列。多個地點可以有相同的carId。我如何更新我的carDataList查詢來獲得銷售每輛車的所有位置,以便這些locationID可以顯示在carList gridview中?

感謝您的任何建議!

回答

0
foreach(var car in carList) 
     { 
      var locationIds = Locations.Where(loc => loc.CarId == car.Id).Select(loc => loc.Id); 
      car.locationIDs = string.Join(",", locationIds); 
     } 
1

使用GroupJoin應該工作。如果第一個給你翻譯SQL問題,請嘗試第二個。

var carListData = db.cars 
        .GroupJoin(db.locationCars, 
           (o,i) => o.carId, 
           (o,i) => i.carId, 
           (o,i) => new { o.carId, o.carName, locationIds = string.Join(",", i.Select(l => l.locationId))) 
        .OrderBy(g => g.carName); 

版本執行字符串中存儲

var carListData = db.cars 
        .GroupJoin(db.locationCars, 
           (o,i) => o.carId, 
           (o,i) => i.carId, 
           (o,i) => new { o.carId, o.carName, locations = i.Select(l => l.locationId)) 
        .OrderBy(g => g.carName) 
        .ToList() 
        .Select(g => new { g.carId, g.carName, locationIds = string.Join(",", g.locations));   
0

加入如果你的外鍵在數據庫中正確定義,和你的實體框架模型他與外鍵更新。然後,您將在每個Car對象中使用您需要的locationIds來獲取一個locationCars集合。

創建一個名爲carListData的新對象並將其選入該對象。該對象可以將您的LocationCars集合轉換爲csv的locationIds。

相關問題