【问题标题】:Linq To SQL: left join and vb.NETLinq To SQL:左连接和 vb.NET
【发布时间】:2013-12-10 17:27:22
【问题描述】:

我有这个 SQL 查询:

SELECT TOP 1 r.* FROM dbo.Request r
  LEFT JOIN dbo.Process p
  ON r.IdReq = p.IdReq
WHERE IdProcess Is NULL
ORDER BY r.ReqDate ASC

我想把它写在 vb.net 程序中,使用 Linq To SQL 语法:

Private Function getOldestRequest() As Request
    Dim dc As ProcessDataContext = new ProcessDataContext(ConfigurationManager.ConnectionStrings("...").ConnectionString);

    Dim pr = From r In dc.Request
             From p In dc.Process.Where(Function(v) v.IdReq = r.IdReq And v.idProcess Is Nothing)
             Select New {Request = r}

    Return pr
End Function

这是我写的,但在Return 行出现错误。

【问题讨论】:

    标签: sql vb.net linq


    【解决方案1】:

    LINQ 语句返回 IEnumerable 对象,而您的方法返回单个 Request 对象。在您的情况下,您似乎只需要返回 LINQ 语句的第一个结果。

    类似:

        Dim pr = (From r In dc.Request
             From p In dc.Process.Where(Function(v) v.IdReq = r.IdReq And v.idProcess Is Nothing)
             Select New {Request = r}).FirstOfDefault
        Return pr
    

    【讨论】:

    • Is 运算符不接受整数类型的操作数。 IdProcess 是整数
    【解决方案2】:

    将您的选择更改为

    Select r
    

    你的回归

    Return pr.OrderBy(Function(v) v.RecDate).FirstOrDefault
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2010-09-21
      相关资源
      最近更新 更多