我对linq完全是个新手。
我有一个T-SQL语句,我不知道它是用Linq写的。
数据库表结构如下:数据库结构
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中编写这段代码。
谢谢你的帮助。
您可以使用在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
(。
有关详细信息,请参阅下一个链接:
- Join(查询表达式语法(
- 执行内部联接(查询表达式语法(
- Join(基于方法的语法(
- 联接方法文档
- EntityFramework核心