linq - 如何在 LINQ 中加入常量?

标签 linq linq-to-sql

我正在尝试对这样的常量进行左连接:

SELECT 
    [t0].[DeviceId], 
    [t0].[DeviceTypeId], 
    [t0].[UnitId], 
    [t0].[UnitNum], 
    [t0].[ManPhone], 
    [t0].[Status], 
    [t2].[MaintDate] AS [ServiceExpiration]
FROM [dbo].[Devices] AS [t0]
    INNER JOIN [dbo].[CustomerDevices] AS [t1] 
        ON ([t0].[DeviceId]) = [t1].[DeviceId]
    LEFT JOIN [dbo].[Maintenance] AS [t2] 
        ON ([t0].[DeviceId]) = [t2].[DeviceId]
            AND 8 = [t2].ActionId

我得到一个 CS1941当我像这样在 LINQ 中尝试它时:
var devices = from d in db.Devices
    join cd in db.CustomerDevices
        on d.DeviceId equals cd.DeviceId
    join serviceExpiration in db.Maintenances
        on 
           new { d.DeviceId, ActionId = 8 } // CS1941
               equals 
           new { serviceExpiration.DeviceId, ActionId = serviceExpiration.ActionId } into j1
    from deviceServiceExpiration in j1.DefaultIfEmpty()

最佳答案

从维护中尝试 ActionId == 8首先,然后用这个加入反对。

var expirations = from serviceExpiration in db.Maintenances
                  where serviceExpiration.ActionId == 8
                  select serviceExpiration;

var devices = from d in db.Devices
    join cd in db.CustomerDevices
        on d.DeviceId equals cd.DeviceId
    join e in expirations
        on d.DeviceId = e.DeviceId into j1
    from deviceServiceExpiration in j1.DefaultIfEmpty()
    select deviceServiceExpiration;

关于linq - 如何在 LINQ 中加入常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1862330/

相关文章:

c# - LINQ 表达式不遵守 xml 边界

c# - 使用 linq to SQL 更新特定列

LINQ-to-SQL CompiledQuery.Compile() 与更新、删除、插入?

Linq-to-SQL 设计问题!

c# - Linq DataContext.ExecuteCommand 和 SaveChanges

c# - linq to sql - 我如何重写以下内容

c# - 两个列表的 linq 并集

c# - 循环地将字符串分割成锯齿状数组

c# - 搜索列表比使用 foreach 更好的方法

c# - linq 另一个列表的有序子集