Nella sintassi di query posso scriverePosso accedere al "genitore" saltato di SelectMany quando si utilizza la sintassi punteggiata in Linq?
var greendoorsWithRooms = from room in house.roooms
from door in room.doors
where door.Color = green
select new {d=door,r=room}
C'è un modo ho potuto ottenere lo stesso con la sintassi punteggiata?
var greendoorsWithRooms = house.rooms.SelectMany(room=>room.Doors)
.Where(door=>door.Color==green)
.Select(door=>new{ <room is not in scope> }
sto insegnando alcuni non-programmatori di utilizzare LINQPad contro un modello a oggetti di proprietà in modo che non abbiamo per creare GUI in giro tutti i casi dispari. Sarebbe utile se non dovessero imparare la sintassi della query. Attualmente, ho fornito snippet che risolvono ciò usando foreach, ma la domanda si presenta ancora una volta ogni tanto.
Ecco fatto. Grazie. – Tormod
Credo che sia necessario cambiare i parametri di porta e stanza sulla seconda riga in modo che il primo parametro sia la fonte e il secondo sia la raccolta. '(room, door) => new {d = door, r = room})' –
Mi piacciono molto 'house.rooms.SelectMany (r => r.Doors, Tuple.Create) .Where (t => t. Item2.Color == verde) '. Potresti inserire la clausola 'where' in alcuni punti diversi, ovviamente. – Greg