2011-06-08 17 views
1

我有麻煩寫一個查詢與Linq我解釋更好我的情況下,我有一個數據庫與2表如下:如何使用Linq To Sql查詢來顯示我的案例中的數據?

它是第一個表;

  • 酒店

  • HotelID(NVARCHAR(10) - PK)

  • HotelName(NVARCHAR(200))

而這一次是第二表;

  • 時期

  • PeriodID(中間體(INC) - PK)

  • _From(日期時間)
  • _To(日期時間)
  • HotelID(NVARCHAR(10) - FK )

然後在第二個表格(期間)有FK(HotelID)連接2個表格; 發生某些時候我有一個HotelName獲取更多時間段(PeriodID),因此我的目的是將數據顯示在DataGrid的唯一一行中,我向您展示一個示例,因爲如果有更多的時間段,我想在DataGrid中顯示數據在同一酒店名稱:

|酒店名稱|從|爲|從(2)|到(2)|從(3)|到(3)|從式(4)|到(4)|


| Excelsior | 12/5/10 | 3/6/10 | 2/8/10 | 9/9/10 | 23/9/10 | 10年1月10日| 11年2月11日| 1/12/10 |

所以我問你有任何想法/建議如何顯示一個DataGrid裏面的數據使用Linq To Sql?

非常感謝您的關注。

玩得開心。

乾杯

+0

偏題:不要讓你的PK成爲一個'VARCHAR'。讓它成爲'INT NOT NULL IDENTITY(1,1)'。如果你的用戶需要一個唯一的名字,你可以添加一個唯一的約束,但不要讓它成爲表中的主鍵。這對性能不利並且阻礙了開發。 – Steven 2011-06-08 09:05:40

+0

@Steven,非常感謝您的建議,我會根據您的建議予以糾正。 – JayJay 2011-06-08 09:13:12

回答

2

本文介紹用分層數據綁定工作:http://msdn.microsoft.com/en-us/library/aa478959.aspx

然後,創建這大致映射到數據庫表的對象模型:

Hotel 
- ID 
- Name 
- Bookings 
    - Booking 1 { From, To } 
    - Booking 2 { From, To } 
    - Booking n { From, To } 

你的LINQ的應該是這個樣子這個:

var hotels = _db.Hotel.Select(); 

foreach(var hotel in hotels) 
    hotel.Bookings = _db.Period.Where(x => x.HotelId == hotel.HotelId).Select(); 
+0

嗨christofr,我讀到你的鏈接,我會盡力按照這一步,讓你知道,非常感謝。 – JayJay 2011-06-09 07:22:49