如何使用LinQ从'Table1'通过ClassId从'Class'获取Name-property?

时间:2013-09-25 10:43:01

标签: c# linq asp.net-mvc-4

我在db中有2个表。第一个表是它的所有描述,第二个表描述了第一个表中的一个部分。它看起来像:

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

现在,当我创建View并显示结果时,它会向我显示类似数字的ClassId,但我希望从table2中看到字符串格式。如何在主表(table1)中连接table2(Class)中的tie。

1 个答案:

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