Busco a entender un poco más acerca de LINQ y usarlo un poco más, así que un poco de sí el trabajo de desarrollo que va aquí ...población objeto con LINQ
Tengo un objeto de la siguiente manera:
public class Player(){
public string Name{get;set;}
public Club currentClub{get;set;}
public IEnumerable<Club> previousClubs{get;set;}
}
Ahora, dada una lista de jugadores, me gustaría seleccionar las que anteriormente han jugado para varios clubes seleccionados, podría hacerlo fácilmente por un par de declaraciones foreach anidados - pero me gustaría hazlo con Linq ...
He intentado esto, pero no se devuelve nada de él:
var prevClubs =
from player in players
from clubOriginal in player.previousClubs
from clubSecond in player.previousClubs
from clubThird in player.previousClubs
where clubOriginal.ID == 1
where clubSecond.ID == 2
where clubThird.ID == 3
select new HistoryOfPlayer{
firstClub == clubOriginal.Name,
secondClub == clubSecond.Name,
thirdClub == clubThird.Name
}
¿Alguna ayuda en donde me estoy equivocando? Los datos definitivamente existen porque cuando tengo un bucle foreach girando sobre los palos dentro de un bucle que gira sobre los jugadores y devuelvo una colección de todos los jugadores que han jugado para los clubes 1,2 & 3 hay datos ...
Efectivamente debería devolver varias instancias de un objeto HistoryOfPlayer, todas con los nombres de los mismos 3 clubes (dado que están vinculadas en ID) - como digo, es un poco autoaprendizaje, por lo que intenta aplicarlo al deporte así que se queda en mi cabeza un poco!
¿Alguien puede ayudar?
Debería vincular con 'Join' isntead de' Where' en LINQ-To-Objects por motivos de rendimiento: http://stackoverflow.com/questions/5551264/why-is-linq-join-so-much-faster -than-linking-with-where –