2016-05-06 14 views
0

Ich habe eine Liste von SelectedEmployees aus der Liste der Employees-Klasse in IEnumerable<Employee> SelectedEmployees Sammlung. Wieder habe ich die generische Sammlung als unten stehenden Code verschachtelt. Wie kann ich nur für ausgewählte Mitarbeiter mit LinQ IsPhoneAssigned Wert true Set mit C#Festlegen oder Zuweisen eines Werts in einer verschachtelten generischen Auflistung mit LinQ C#

public class Employee 
    { 
     IList<PhoneProperty> Phones {get; set;} 
    } 

public class PhoneProperty 
    { 
     public bool IsPhoneAssigned { get; set; } 
    } 

Antwort

1

Linq ist für die Abfrage, nicht für die Zuordnung. So können Sie Ihre Implementierung in zwei Teile aufgeteilt werden:

  1. Linq Ihre Mitarbeiter
  2. wählen Für/Foreach-Schleife den Eigenschaftswert in wahre

So etwas zuweisen:

var query = SelectedEmployees.Where(x => myCondition(x)); 
foreach (var q in query) 
    foreach (var p in q.Phones) 
     p.IsPhoneAssigned = true; 
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 

Ich finde eine andere elegante Möglichkeit, Ihr Problem zu lösen:

Hier erstellen Sie eine Anonymous-Funktion, die die Eigenschaft Ihres Objekts ändert und sie mit geänderter Eigenschaft zurückgibt. Aber tatsächlich denke ich, dass eine Option lesbarer und wartbarer ist.