我在IEnumerable<Employee> SelectedEmployees
集合中的Employees类列表中列出了SelectedEmployees。我再次嵌套通用集合,如下面的代码。如何仅为使用带有C#的LinQ的所选员工将IsPhoneAssigned
值设置为true
public class Employee
{
IList<PhoneProperty> Phones {get; set;}
}
public class PhoneProperty
{
public bool IsPhoneAssigned { get; set; }
}
答案 0 :(得分:1)
Linq用于查询,而不是用于分配。因此,您的实现可以分为两部分:
这样的事情:
var query = SelectedEmployees.Where(x => myCondition(x));
foreach (var q in query)
foreach (var p in q.Phones)
p.IsPhoneAssigned = true;
答案 1 :(得分:0)
var employeesList; // this is your list from context
foreach(var emp in employeesList) // iterate and change all phones
{
foreach(var ph in emp.Phones)
ph.IsPhoneAssigned = true;
}
_context.SubmitChanges(); // save changes to context
我找到另一种优雅的方法来解决你的问题:
var changedCollection = _context.SelectedEmployees.Select(x =>
{
x.Phones.Select(y =>
{
y.IsPhoneAssigned = true;
return y;
})
}).ToList();
_context.SubmitChanges();
在这里创建anonymouse函数,它会更改对象的属性并使用changed属性返回它。但实际上我认为1选项更具可读性和可维护性。