两个表两个关系ASP MVC

时间:2016-09-20 07:56:52

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

今天早上我有这个疑问,无法得到答案。我希望有人可以帮助我。

我有两张桌子(T1和T2)

T1 
-> Id (P)
-> InstanceId (U)
-> ObjectId (U)
-> Name

T2 
-> Id (P)
-> InstanceId (F) (Foreign key for T1.InstanceId)
-> ObjectId (F) (Foreign key for T1.InstanceId)
-> Grade

我需要使用两种关系连接这两个表,并使用linq显示两个表的详细信息。

我已经使用过这个linq查询但不知道如何返回两个表,如果我从这个查询中选择t1和t2,那么不使用ObjectId引用(即t12)?

我该如何解决这个问题。我需要使用这两种关系,并希望获得两个表值。

LINQ:

var result = from t1 in db.T1 
             join t2 in db.T2 on t1.InstanceId equals t2.InstanceId 
             join t12 in db.T2 on t2.ObjectId equals t12.ObjectId 
             select t1;

2 个答案:

答案 0 :(得分:1)

您应该使用new关键字。

join clause

var result =
        from t1 in db.T1
        join t2 in db.T2 on new { ObjectId : t1.ObjectId , InstanceId = t1.InstanceId} equals
                            new { ObjectId : t2.ObjectId , InstanceId = t2.InstanceId}
        select new
        {
            t1,
            t2
        }

答案 1 :(得分:0)

尝试以下方法:

   var x = context.T1.Where(t => t.Id == context.T2.InstanceId)
           .Select(x => new {
              t,
              t.Instance //use the related entity here)
            }).ToList();

'x'是您可以在函数中使用的匿名对象。 t是来自T1的变量,它与T2相关,在你的类中从T2我希望父级为T1。这样你就可以在你的匿名对象中使用它。