C# Linq,根据两个不同的ID从一个表中选择两个记录

C# Linq,根据两个不同的ID从一个表中选择两个记录,c#,entity-framework,linq,C#,Entity Framework,Linq,我试图创建一个语句,从一个ID开始选择表1中的一个对象,然后从该对象中获取两个新ID,并使用它们查找表2中的两个不同对象。 我的目标是最终得到一个匿名对象,其中包含来自表1的对象和来自表2的2个对象,即table1.object、table2.object1、table2.object2 我不知道这是否可以在一个声明中完成 到目前为止,我得到了这个,但它只给出了table1.object和table2.object1,而不是table2.object2: 这就是你想要的: var result

我试图创建一个语句,从一个ID开始选择表1中的一个对象,然后从该对象中获取两个新ID,并使用它们查找表2中的两个不同对象。 我的目标是最终得到一个匿名对象,其中包含来自表1的对象和来自表2的2个对象,即table1.object、table2.object1、table2.object2

我不知道这是否可以在一个声明中完成

到目前为止,我得到了这个,但它只给出了table1.object和table2.object1,而不是table2.object2:

这就是你想要的:

var result = db.Person.Where(x => x.Id == myId)
.Select(p => new {
pers = p,
otherP1 = db.OtherPerson.SingleOrDefault(o => p.OhterP1_Id1 == o.Id),
otherP2 = db.OtherPerson.SingleOrDefault(o => p.OhterP1_Id2 == o.Id)
}).SingleOrDefault();

如果表1中的对象在表2中有两个以上的对象,该怎么办?或者只有一个?对于表1中的对象,表2中只能有2个对象,Id是唯一的所以。。。您的对象有OhterP1_Id1和OhterP1_Id2?是的,该对象有两个id,我需要在表2中查找,getOnly必须更改为FirstOrDefault才能将其找到work@user7324523FirstOrDefault意味着有多个这样的对象,您可以使用其中的任何一个。你确定FirstOrDefault是你想要的吗?SingleOrDefault抛出一个不受支持的异常,因为我还没有使用ToList。@K.M是的,你是对的,Entity Framework 3.5不支持SingleOrDefault,但它在EF 4.0中工作。
var result = db.Person.Where(x => x.Id == myId)
.Select(p => new {
pers = p,
otherP1 = db.OtherPerson.SingleOrDefault(o => p.OhterP1_Id1 == o.Id),
otherP2 = db.OtherPerson.SingleOrDefault(o => p.OhterP1_Id2 == o.Id)
}).SingleOrDefault();