2017-07-20 43 views
0

喜加盟select語句有我想寫使用LINQ加入的boothtable到聯接查詢兩個表有一個像下面的關係..如何使用使用LINQ表達

class Boothtable 
{ 
    public int BoothId {get;set;} 
    public string BoothName {get;set;} 
    public double Price {get;set;} 
    public int RoomId{get;set;} 
} 

class RoomTable 
{ 
    public int RoomId {get;set;} 
    public string RoomName{get;set;} 
    public sting Location {get;set;} 

} 

room Room上的roomstable並返回boothtable中的所有屬性,並僅從Rooms表中返回RoomName屬性。有沒有人可以指導我如何實現這一目標?

到目前爲止,我有這樣的linq exp,但它只返回booths表中的所有屬性。

var getData = from boothtable in context.Boothtable 
       join roomtable in context.RoomTable 
       on boothtable.RoomId equals roomtable.RoomId 
       where boothtable.BoothId == someId 
       select boothtable; 

回答

6

如果您想從兩者中檢索屬性,則必須從兩者中投影包含數據的對象。它使用一個匿名對象可以這樣做:

select new { boothtable, roomtable } 

如果你想從一個方法返回這個集合的匿名對象的再定義一個自定義對象具有兩個屬性並創建實例

select new YourCustomObjet { Booth = boothtable, Room = roomtable } 

如果您只需要一些屬性(錯過了在第1號),然後爲你的項目中的示例中的對象只以上的項目具體領域:

select new 
{ 
    boothtable.BoothId, 
    boothtable.BoothName, 
    boothtable.Price, 
    roomtable.RoomName 
} 

注意,如果它是一個匿名對象和所需的屬性名相同,無需顯式定義名稱

+0

非常感謝您 – 1future

+0

@ 1future - 歡迎您:) –

3

試試這個 -

var getData = (from boothtable in context.Boothtable 
       join roomtable in context.RoomTable 
       on boothtable.RoomId equals roomtable.RoomId 
       where boothtable.BoothId == someId 
       select new 
       { 
        BoothId = boothtable.BoothId, 
        BoothName = boothtable.BoothName, 
        Price = boothtable.Price, 
        RoomName = roomtable.RoomName 
       }); 
+0

非常感謝。謝謝 – 1future