使用“外部连接”填充嵌套类使用linq

本文关键字:嵌套 linq 填充 外部 连接 外部连接 使用 | 更新日期: 2023-09-27 18:06:41

我试图填充类A(不好意思命名),从EF使用Linq的数据。

得到这些类:

public class A
{
    public string SomeA { get; set; }
    public B B { get; set; }
    public List<C> C { get; set; }
}
public class B
{
    public string SomeB { get; set; }
    public string SomeB2 { get; set; }
}
public class C
{
    public string SomeC { get; set; }
    public string SomeC2 { get; set; }
}

我的SQL查询获得所需的所有信息看起来像:

SELECT * FROM A
    JOIN B ON A.X = B.X
    LEFT JOIN C ON C.X = B.X

linq查询如何填充A?

List<A> things = ......

Thanks in advance

/Lasse

使用“外部连接”填充嵌套类使用linq

这比你想象的要简单:

List<A> things = (
    from thing in db.As
    where thing.B.C != null
    select thing)
    .ToList();

注意:要使其工作,您的EF模型必须理解BC之间存在FK关系。在这种情况下(通常是当FK在数据库中并且您直接从数据库定义生成模型时),EF将在B上生成C属性(反之亦然)。