Sql 使用Linq和Lambda表达式的左连接返回左表
我尝试使用Lambda表达式从特定应用程序中获取文件夹中的每个案例。 我有两张桌子: 表1:个案Sql 使用Linq和Lambda表达式的左连接返回左表,sql,linq,lambda,left-join,Sql,Linq,Lambda,Left Join,我尝试使用Lambda表达式从特定应用程序中获取文件夹中的每个案例。 我有两张桌子: 表1:个案 CaseId | FolderId | CaseContent 0 1 "blap" 1 2 "blop" 2 1 "blup" 3 3 "blip" 表2:文件夹 FolderId | ApplicationId 0 1 1 1 2
CaseId | FolderId | CaseContent
0 1 "blap"
1 2 "blop"
2 1 "blup"
3 3 "blip"
表2:文件夹
FolderId | ApplicationId
0 1
1 1
2 1
3 2
我想返回ApplicationId为1的文件夹中的每个案例
结果:
CaseId | FolderId | CaseContent
0 1 "blap"
1 2 "blop"
2 1 "blup"
我在这里找到了一个很好的连接表达式示例:
我不能使用它的原因是它从两个表返回内容
var query = objEntities.Employee.Join(objEntities.Department, r => r.EmpId, p => p.EmpId, (r,p) => new{r.FirstName, r.LastName, p.DepartmentName});
所以不是
(r,p) => new{r.FirstName, r.LastName, p.DepartmentName}
我希望它返回整个r,而不是p
我试着在这一行中做些什么
IQueryable<Case> cases = Cases.Join(Folders, f => f.Folder.folderId, c => c.folderId, (c) => c);
IQueryable cases=cases.Join(Folders,f=>f.Folder.folderId,c=>c.folderId,(c)=>c);
我想说它不起作用(
提前谢谢!!有几种方法可以做到这一点 但是要使join表达式正确,您需要
IQueryable<Case> cases //line:#1
= Cases.Join(Folders.Where(f => f.ApplicationId == 1), //line:#2
c => c.folderId, //line:#3
f => f.folderId, //line:#4
(f,c) => c); //line:#5
我认为这更具可读性!不用担心!如果这回答了您的问题,请将其标记为答案。
var query = from c in Cases
join f in Folders on c.FolderId equals f.FolderId
where f.ApplicationId == 1
select c;