私は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ステートメントに変換する必要があります。ラムダがいいでしょう
すべてのテーブルは 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 を操作する適切な方法ですか?
私が見逃している可能性のある問題、つまり、上記またはソリューション全体での例外またはパフォーマンスの問題の可能性はありますか?