Linq,根据2个不同的ID从一张表中选择两条记录

时间:2016-12-21 08:14:14

标签: c# entity-framework linq

我尝试创建一个语句,我从ID开始,在table1中选择一个对象,然后从该对象中获取2个新ID,并使用它们在table2中查找2个不同的对象。 /> 我的目标是最终得到一个匿名对象,该对象具有table1中的对象和table2中的2个对象,即(table1.object, table2.object1, table2.object2)

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

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

db.Person.Where(x => x.Id == myId)
      .SelectMany(p => db.OtherPerson
        .Where(o=> p.OhterP1_Id1 == o.Id).DefaultIfEmpty(),
        (p, o) => new {pers = p, otherP = o})

1 个答案:

答案 0 :(得分:3)

这就是你想要的:

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