简体   繁体   English

Linq To SQL:左联接和vb.NET

[英]Linq To SQL: left join and vb.NET

I have this SQL query: 我有这个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

I want write it in a vb.net procedure, using Linq To SQL syntax: 我想使用Linq To SQL语法在vb.net过程中编写它:

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

This is what I wrote, but I get error, on the Return line. 这是我写的,但是在Return行上却出错。

LINQ statements return IEnumerable objects, and your method is returning a single Request object. LINQ语句返回IEnumerable对象,并且您的方法返回单个Request对象。 In your case looks like you only need to return the first result of the LINQ statement. 就您而言,您只需要返回LINQ语句的第一个结果。

Something like: 就像是:

    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

Change your Select to 将您的选择更改为

Select r

And your return to 然后您返回

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM