ciao,
karontenero ha scritto:
Quindi tramite questa query mi ricavo la lista dei valori di start, giusto?
sì, esatto. Hai già provato, funziona?
karontenero ha scritto:
mi viene restituito questo, come mai?
Prova a poggiare il mouse sull'ultimo metodo Select: vedrai che il suo tipo di ritorno è un IEnumerable<string>.
E' perfetto così, perché si tratta di un elenco di stringhe che potrai ciclare un foreach oppure usarlo come data source per qualche controllo.
In realtà, il tipo di oggetto che Select ritorna, non è esattamente un IEnumerable<string> perché IEnumerable è solo un'interfaccia, ovvero un "contratto" che i tipi concreti possono implementare.
Non potendo fare
new IEnumerable<string>(), il metodo Select sceglie di restituirti un oggetto di tipo
WhereSelectEnumerableIterator<System.Xml.Linq.XElement,string> che viene usato internamente per garantirti
query componibili senza per questo pesare sulle prestazioni.
Comunque è una roba che riguarda il funzionamento interno di LINQ, non te ne curare. Per il
principio di sostituzione di Liskov, tutto quello che ti serve sapere è che quel tipo di ritorno implementi IEnumerable<string>. Non ha importanza quale sia la sua logica interna.
Invece, se ti chiedi come mai oltre a
string venga menzionato anche il parametro di tipo
XElement, questo dipende dal funzionamento del metodo Select. Essendo un metodo di
proiezione, ovvero che trasforma oggetti di un tipo in nuovi oggetti di un altro tipo (dall'XElement "ora" alla stringa "Start", in questo caso) ha bisogno di conoscere il tipo di oggetto che riceverà in input e quello che fornirà come risultato.
ciao
Modificato da BrightSoul il 28 giugno 2013 23.18 -