【问题标题】:LINQ syntax for SQL INNER JOINSSQL INNER JOINS 的 LINQ 语法
【发布时间】:2020-04-21 06:55:13
【问题描述】:

我是 linq 的新手。

我有一个不知道用 Linq 编写的 T-SQL 语句。

数据库表结构如下:DB structure

SQL 代码如下所示:

SELECT 
    e.PersonId, e.PhoneNoId, e.PhoneId, s.StateId, e.AssignDate, e.DiscardDate, e.Note
FROM
    dbo.Evidence AS e 
INNER JOIN
    dbo.Phone AS p ON e.PhoneId = p.PhoneId 
INNER JOIN
    dbo.[State] AS s ON p.StateId = s.StateId

我想知道如何在 linq 中使用 lambda 表达式编写这段代码。

感谢您的帮助。

【问题讨论】:

  • 您要在EntityFrameworkC# 中重写您的T-SQL 查询吗?
  • 是的,请。我想将T-SQL 重写为LINQ 语法。将用于ADO.NET 项目中编写的C#。谢谢。

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


【解决方案1】:

您可以使用LINQ 编写T-SQL 查询

  • 任一查询表达式语法:

    // Declare query.
    var query =
        from e in db.Evidence
        join p in db.Phone on e.PhoneId equals p.PhoneId
        join s in db.State on p.StateId equals s.StateId
        select new {e.PersonId, e.PhoneNoId, e.PhoneId, s.StateId, e.AssignDate, e.DiscardDate, e.Note};
    // Execute query.
    var result = query.ToList();
    
  • 或基于方法的查询语法:

    // Declare and execute query.
    var result =
        db.Evidence
           .Join(db.Phone, e => e.PhoneId, p => p.PhoneId, (e, p) => new {e, p})
           .Join(db.State, t => t.p.StateId, s => s.StateId, (t, s) =>
              new {t.e.PersonId, t.e.PhoneNoId, t.e.PhoneId, s.StateId, t.e.AssignDate, t.e.DiscardDate, t.e.Note});
           .ToList(); // Method "ToList()" executes query.
    

在此示例中,变量db 的类型为DbContext(我假设您将使用EntityFramework)。

详情请参考下一个链接:

【讨论】:

  • 这正是我想要的。谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2022-09-28
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
相关资源
最近更新 更多