[英]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.