今天早上我有这个疑问,无法得到答案。我希望有人可以帮助我。
我有两张桌子(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;
答案 0 :(得分:1)
您应该使用new
关键字。
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。这样你就可以在你的匿名对象中使用它。