c# - SQL INNER JOINS 的 LINQ 语法
问题描述
我是 linq 的新手。
我有一个我不知道用 Linq 编写的 T-SQL 语句。
数据库表结构如下所示:DB 结构
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
我想知道如何使用 lambda 表达式在 linq 中编写此代码。
感谢帮助。
解决方案
您可以使用以下方式编写T-SQL
查询LINQ
任一查询表达式语法:
// 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
)。
有关详细信息,请参阅下一个链接: