2011-01-06 15 views
0

So habe ich so etwas wie diese:die ForEach-Erweiterungsmethode auf der Liste - wie das Objekt erhalten?

List<Entity2> list = new List<Entity2>(); 
    Action<Entity2> adder= (z) =>retVal.Add(z); 
    Func<Entity1, Entity2> getter = (x) =>repository2.GetSingle(f=>f.ID == x.Entity2ID); 

    repository1.Get(q=>q.UserName).Foreach(adder(getter(???))); //Need to pass Entity1 to the delegate in here 

Entity1 Hat ein Referenzfeld genannt Entity2ID, aber es gibt keine explizite Beziehung in der Linq aus bestimmten Gründen eingestellt.

SO ist die Idee, entity2 für jede entity1 mit dem Getter-Delegat zu suchen, da sie keine explizite Beziehung haben und fügen Sie einfach die übereinstimmende entity2 mit der ForEach-Erweiterung für die Auflistung von entities1 der Liste hinzu.

Meine Frage ist, wie erhalte ich das Objekt, an dem ich ForEach ausführe?

Antwort

2
repository1.Get(q=>q.UserName).Foreach(x => adder(getter(x))); 

Alternativ sollten Sie in der Lage sein, dies zu tun:

retval.AddRange(repository1.Get(q=>q.UserName) 
           .Select(x => repository2 
           .GetSingle(f=>f.ID == x.Entity2ID))); 
Verwandte Themen