【问题标题】:entity framework use linq to return join tables实体框架使用 linq 返回连接表
【发布时间】:2013-06-26 14:09:54
【问题描述】:

我有一些桌子:

table1:
id1
fk_tb2 // this is the fk to table2

table2:
id2
fk_tb3 //this is the fk to table3

table3:
id3
name3

现在我想返回一个像这样的表: id1 fk_tb2 名字3

有人知道怎么做吗?谢谢

问候,

【问题讨论】:

标签: c# sql linq entity-framework


【解决方案1】:

加入表格并使用匿名类型返回必填字段:

from t1 in table1
join t2 in table2 on t1.fk_tb2 equals t2.id2
join t3 in table3 on t2.fk_tb3 equals t3.id3
select new { t1.id1, t2.id2, t3.name3 }

【讨论】:

  • 谢谢,返回类型是什么?因为我需要把它写在一个返回这个的函数中。
  • 匿名类型将是匿名的 :) 您不能从方法返回匿名对象。如果要返回这三个值,则创建一些类public class Foo { public int Id1 { get; set; } ...,它将具有三个属性 Id1、Id2、Name。并返回此类的实例:select new Foo { Id1 = t1.id1, Id2 = t2.id2, Name = t3.name3 }
【解决方案2】:

如果你的导航映射得很好,你可以做类似的事情

var m = from tb1 in dbContext.table1
        select new {
                     id1 = tb1.id1,
                     fk_tb2 = tb1.table2.tb2,
                     name3 = tb1.table2.table3.name3
                   };

你可以这样做

var m = from tb1 in dbContext.table1
        join tb2 in dbContext.table2 on tb2.id2 equals tb1.fk_tb2
        join tb3 in dbContext.table3 on tb3.id3 equals tb2.fk_tb3
        select new {
                     id1 = tb1.id1,
                     fk_tb2 = tb2.id2,
                     name3 = tb3.name3
                   };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多