仍然习惯LINQ语法,并且遇到了我需要在LINQ中创建的查询 - 但不完全确定如何。
SELECT *,
(SELECT 1 FROM Applications
WHERE Applications.jID = Jobs.ID
AND Applications.uID = @uID) AS Applied
FROM [Jobs]
在LinqPad中播放,但界面并没有真正帮助(至少我能看到的)。
答案 0 :(得分:2)
根据Paul Sasik提供的链接以及他在LEFT OUTER JOIN
之后的建议,此查询应符合您的要求;
var query = from job in jobs
join app in applications on job.ID equals app.jID into grouped
from subApp in grouped.DefaultIfEmpty()
select new { Job = job, Applied = (subApp != null) };
修改强>: 要按用户过滤,请按以下步骤更新查询;
var query = from job in jobs
join app in
(
from userApp in applications where userApp.uID == uID select userApp
) on job.ID equals app.jID into grouped
from subApp in grouped.DefaultIfEmpty()
select new { Job = job, Applied = (subApp != null) };
我个人原本会在此时直接使用.Where()方法,但只是认为我会保持一致并继续使用查询语法。
答案 1 :(得分:0)
var jobs = from j in this.db.Jobs
where !j.Applications.Any(x => x.UserId == currentUserId)
select j;
答案 2 :(得分:0)
我建议您查看工具Linqer - 它将SQL转换为Linq代码。这不是免费的,但有10天的试用期。