【问题标题】:SQL to LINQ in C# (query with several tables and alias)C# 中的 SQL 到 LINQ(使用多个表和别名进行查询)
【发布时间】:2011-09-02 17:07:33
【问题描述】:

是否有人可以将此查询转换为 C# 中的 Linq。我正在搜索,但没有找到任何类似的查询。 非常感谢你们! SQL 语句:

SELECT a.Amenaza, c.Nombre, c.Descripcion
 FROM AmenazasEstablecer a, ControlesEstablecer c, Matriz_Amenazas_ControlesEstablecer m
 WHERE a.IdAmenaza = m.IdAmenaza AND c.IdControl=m.IdControl;

【问题讨论】:

  • 你能展示你的C#代码吗?数据上下文?对象名称?等等?
  • 您是否有理由进行隐式连接而不是使用 ON 子句?

标签: c# sql linq sql-to-linq-conversion


【解决方案1】:

您必须创建并指定一个 DataContext,但一旦这样做,您就可以逃脱:

MyDataContext context = new MyDataContext("SomeConnectionString");

var results = from a in context.AmenazasEstablecer
              from c in context.ControlesEstablecer
              from m in context.Matriz_Amenazas_ControlesEstablecer
              where a.IdAmenaza == m.IdAmenaza && c.IdControl == m.IdControl
              select new {
                  a.Amenaza,
                  c.Nombre,
                  c.Descripcion
              });

【讨论】:

    【解决方案2】:
    var results = from a in context.AmenazasEstablecer 
                  join m in context.Matriz_Amenazas_ControlesEstablecer 
                              on  a.IdAmenaza equals m.IdAmenaza
                  join c in context.ControlesEstablecer 
                              on c.IdControl equals m.IdControl
                 select new {a.Amenaza, c.Nombre, c.Descripcion};
    

    【讨论】:

    • @Adrian:我在同一条船上。我觉得他们更干净。我实际上开始为我的答案编写这个确切的代码,但是当我意识到 OP 专门要求交叉连接时改变了它。无论如何我都赞成这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多