是否可以将此代码转换为一个 LINQ 查询。我本可以发誓我以前做过类似的事情,但我不知道我可能在哪里代码。如果一个列表具有来自另一个列表的值,我想执行子查询并修改所选项目的值。
var selectInstructors = _instructorService.GetAllNonGuestInstructors()
.Select(i => new SelectListItem()
{
Text = i.User.ToFullName(),
Value = i.Id.ToString()
}).ToList();
var selectedItems = schedule.Instructors
.Select(instructior1 => selectInstructors.FirstOrDefault(s => s.Value == instructior1.Id.ToString()))
.Where(selectedItem => selectedItem != null);
foreach (var selectedItem in selectedItems )
{
selectInstructors.Remove(selectedItem);
selectedItem.Selected = true;
selectInstructors.Add(selectedItem);
}
所以让我们假设在selectInstructors
列表中我有这些值:John Smith,1 Jane Doe,2 Dave Ritter,3(在我们迭代持久化的讲师之前,selected
布尔值默认为 false)
班级有该schedule.Instructors
时间表的持续教师名单:John Smith,1 Dave Ritter,3
现在,我想做的是设置值等于的任何Selected
属性selectInstructors
schedule.Instructors