Sono un novizio LINQ cercando di usarlo per acheive il seguente:Come selezionare i valori all'interno di un intervallo di indice fornito da un elenco utilizzando LINQ
Ho una lista di int: -
List<int> intList = new List<int>(new int[]{1,2,3,3,2,1});
Ora, voglio confrontare la somma dei primi tre elementi [intervallo indice 0-2] con gli ultimi tre [intervallo indice 3-5] usando LINQ. Ho provato il LINQ Select e prendere metodi di estensione, nonché il metodo di SelectMany, ma io non riesco a capire come dire qualcosa di simile
(from p in intList
where p in Take contiguous elements of intList from index x to x+n
select p).sum()
Ho guardato il Contiene metodo di estensione troppo, ma che non vede arrivare io quello che voglio Eventuali suggerimenti? Grazie.
Nota che List .GetRange sarà più efficiente, anche se per le collezioni più grandi: https: // icodeit. wordpress.com/2012/08/27/performance-of-skip-and-take-in-linq-to-objects/, http://geekswithblogs.net/BlackRabbitCoder/archive/2012/03/29/c.net -little-wonders-skip-and-take.aspx –
nawfal
Questo è un commento valido, valido (così valido un paio di anni fa avevo sviato l'autore della risposta di seguito che ha detto la stessa cosa), anche se l'OP ha chiesto specificamente su LINQ così non puoi reall y garantire una lista come fonte. Questa potrebbe essere stata una versione semplificata del vero problema in questione, in cui la versione semplificata era solo una lista codificata (e potrebbe davvero essere una query su un oggetto grafico o una query LINQ su SQL). –