C# 使用实体框架合并两个表

C# 使用实体框架合并两个表,c#,sql,entity-framework,lambda,entity-framework-5,C#,Sql,Entity Framework,Lambda,Entity Framework 5,我有以下疑问: { SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson FROM TableA AS A LEFT JOIN TableC AS C1 ON A.FK_PersonA = C1.Id LEFT JOIN TableC AS C2 ON A.FK_PersonB = C2.Id UNION SELECT B.Id, B.FullName1 AS APerson, B.FullName2 AS B

我有以下疑问:

{
 SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson
 FROM TableA AS A
   LEFT JOIN TableC AS C1 ON A.FK_PersonA = C1.Id
   LEFT JOIN TableC AS C2 ON A.FK_PersonB = C2.Id
 UNION
 SELECT B.Id, B.FullName1 AS APerson, B.FullName2 AS BPerson
 FROM TableB AS B
}
我想将其转换为实体框架lambda查询,这可能吗

数据模型


首先,您应该为您的模型创建存储库。读一下这个。 因此,您可以使用:

var ret = 
    (from taRec in TableA.GetAll()
    join tc1 in TableC.GetAll on taRec.FK_PersonA equals tc1.Id
      into tcRecs1
    from tcRec1 in tcRecs1.DefaultIfEmpty()
    join tc2 in TableC.GetAll on taRec.FK_PersonB equals tc2.Id
      into tcRecs2
    from tcRec2 in tcRecs2.DefaultIfEmpty()
    select new {
        taRec.Id, APerson = tcRec1.FullName, BPerson = tcRec2.FullName
    }).Union(
        from tbRec in TableB.GetAll()
        select new {
            tbRec.Id, APerson = tbRec.FullName, BPerson = tbRec.FullName
    });

是的,有可能。但是,首先格式化您的sql代码,并显示您的模型。这是可能的。你做了什么努力?代码优先还是edmx?我使用的是从数据库派生的edmx(DB优先方法)。不确定如何格式化SF上的查询,这对SF来说是新的。更新了Format。处理模型。@Alexander根据您的注释更新了问题。winform软件存储库模式没有预先计划,因此我无法更改。使用另一种模式,我向您演示了如何使用linq查询。在您的描述中,没有关于使用的模式和EF模型的信息。我使用的是实体框架和基于lambda的查询,这在我的问题中已经说明。我没有使用任何其他模式。我想我可以将您提供的内容转换为基于EF lambda的查询。在这个问题上,这太过分了。实体框架有存储库,它们被称为DbSet。