【问题标题】:How can I do a JOIN with Entity Framework如何使用实体框架进行 JOIN
【发布时间】:2016-06-21 19:47:32
【问题描述】:

我怎样才能将Join 与另一个Entity 联系起来?

我有这个,

IEnumerable<EntityNetimoveis.San_Imovel> im = db.San_Imovel.Where(a => a.Credenciada_Id.Equals(10));

我想要一个JOINSan_Imovel_Caracteristica。主键和外键称为Imovel_Id

我试试这个

IEnumerable<EntityNetimoveis.San_Imovel> im = db.San_Imovel.Join.(IEnumerable<EntityNetimoveis.San_Imovel_Caracteristica>, i => imovel_id, a => imovel_Id).Where(a => a.Credenciada_Id.Equals(10));

但这是一个错误的代码。有语法错误。

【问题讨论】:

    标签: linq entity-framework


    【解决方案1】:

    基本上加入就是这样的。

    var im = 
    db.San_Imovel.Join(db.San_Imovel_Caracteristica, i => i.imovel_id, a => a.imovel_Id, (i, a) => a)
    .Where(a => a.Credenciada_Id.Equals(10));
    

    编辑:

    例如,

    var result = db.ATable
    .Where(a => a.Name == 'test')
    .Join(db.BTable, a => a.Id, b => b.Id, (a, b) => a);
    

    【讨论】:

    • 我认为我们最接近解决方案。但是我在您开发的这个解决方案中遇到了一个错误。 The type arguments for method 'System.Linq.Enumerable.Join<> cannot be inferred from the usage. Try specifying the type arguments explicity.
    • 这是什么(i, a) => a
    • 您在比较相同的类型吗?例如,i.imovel_id 和 a.imovel_id 都必须是整数值。
    • (i, a) => a 表示选择 San_Imovel_Caracteristica 表。如果将其更改为 (i, a) => i,它将返回 San_Imovel 表。
    • 我添加了示例,因此您可以清楚地了解语法。 stackoverflow.com/a/5038416/296861
    【解决方案2】:

    有一个“。”在加入之后不应该在那里

    【讨论】:

    • 呃,但这并不能解决问题:P
    【解决方案3】:
    var query = from EntityNetimoveis.San_Imovel i in db.San_Imovel
        join EntityNetimoveis.San_Imovel_Caracteristica c in db.San_Imovel_Caracteristica on i.imovel_id equals c.imovel_Id
        select i;
    
    return query.ToList();
    

    【讨论】:

    • 我需要一些最接近我正在使用的逻辑的东西。使用 lambda 表达式
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多