我可以提出几种方法:
服务器端
var fileReferenz = db.FileRefObj.Where(x => x.ProjectId == id);
ViewBag.referenz = new SelectList(fileReferenz, "FileReferenz", "FileReferenz");
var datei = db.DateiObj
.Where(x => fileReferenz.Select(r => r.ReferenzId).Contains(r => x.ReferenzId == r);
ViewBag.datei = new SelectList(datei, "DateiName", "DateiName");
混合
这里的区别在于我们将 FileRefObj 检索到客户端并使用 ids 进行过滤。
var fileReferenz = db.FileRefObj.Where(x => x.ProjectId == id).ToList();
ViewBag.referenz = new SelectList(fileReferenz, "FileReferenz", "FileReferenz");
var datei = db.DateiObj
.Where(x => fileReferenz.Select(r => r.ReferenzId).Contains(r => x.ReferenzId == r);
ViewBag.datei = new SelectList(datei, "DateiName", "DateiName");
使用Include
var fileReferenz = db.FileRefObj
.Include(x => x.Datei)
.Where(x => x.ProjectId == id)
.ToList();
ViewBag.referenz = new SelectList(fileReferenz, "FileReferenz", "FileReferenz");
var datei = fileReferenz.SelectMany(x => x.Datei);
ViewBag.datei = new SelectList(datei, "DateiName", "DateiName");