我正在使用 vs2010 并有一个如下所示的 sql 语句
select deptId, deptName, Detail from lkDept where deptId in (select deptId from lkDeptLinks where userRef in (select ref from lkUsers where userId = @userId)) order by deptName
我需要将上述转换为 linq 语句,lambda 会很好
所有表都在 dbml
这是我到目前为止的烂摊子,显然它不会起作用
var queryUsers = dc.lkUsers.Where(p => p.UserID == userId);
var queryLinks = dc.lkDeptLinks.Where(p => queryUsers.ref.contains(p.ref));
var queryDept = dc.lkDepts.Where(p => queryLinks.deptid.contains(p.deptid));
任何帮助将不胜感激,并在此先感谢
好的,谢谢大家的帮助,我最终得到了这样的东西
using (var dc = new myDataContext(DB.GetConnectionString()))
{
var queryUsers = dc.lkUsers.Where(p => p.UserID == userId).Select(p => p.@ref);
var queryLinks = dc.lkDeptLinks.Where(p => queryUsers.Any(x => p.UserRef == x )).Select(p => p.DeptId);
var queryDept = dc.lkDepts.Where(p => queryLinks.Any(x => p.DeptID == x)).OrderBy(p => p.deptName).Select(p => new SLDepartment(p));
if (queryDept.Any())
return new SLDepartments(queryDept);
}
注意构造函数 SlDepartment(lkDept dept) 和 SlDepartments(IEnumerable collection) 这是使用 LINQ 的合适方式吗?
我可能遗漏的任何问题,即上述或整个解决方案的异常或性能问题的可能性?