2013-09-25 22 views
1

我有2個表中的分貝。首先表的所有描述,第二個表描述一個在第一table.Its部分看起來像:如何使用LinQ從'Table1'中通過ClassId從'Class'中獲取Name屬性?

+----------+ +----------+ 
I Table1 I I Class I 
+----------+ +----------+ 
I Id  I I Id  I 
I ClassId I <- I Name I 
+----------+ +----------+ 

主表的table1.Connection表可用。

[HttpPost] 
public ActionResult RoomFound(int className, FormCollection collection) 
{ 
    var example = db.table1.Where(p => p.ClassId == className); 
    ViewBag.Ex = example.ToList(); 
} 

而現在,當我創建視圖,並顯示結果,它表明我的classid相同的數字,但我想看到從表2字符串格式。我怎樣才能連接從我的主表(表1)table2(類)的關係。

+0

假設您使用實體框架,您應該在您的Table1定義中具有導航屬性以訪問相應的類。你可以通過這個屬性來獲取名稱。 http://msdn.microsoft.com/en-us/data/jj713564.aspx –

+0

如果你想根據ClassId從Class中得到Name,我認爲它與Class中的Id相同。爲什麼要經歷Table1? – Abbas

+0

嗨,歡迎來到SO。請下次使用問題/問題的簡短描述作爲標題而不是標籤。 – gsharp

回答

1

假設className事實上是一個ClassId那麼你甚至不需要查詢Table1表,只是查詢Class表即直接

ViewBag.Ex = db.Class.Where(p => p.Id == className).Select(p => p.Name).ToList(); 

不過,我會指出,有明確的關係,在此之間Table1Class因此,在數據庫級別定義這個通常是一個好主意,並將其傳遞給您的ORM模型,該模型會自動爲您提供導航屬性,例如

var t = db.table1.Where(p => p.ClassId == className); 
ViewBag.Ex = t.Select(p => p.Class.Name).ToList(); 

就像我,雖然說,它看起來並不像你甚至需要在這裏所有查詢Table1表。