Go Down

Topic: Linq su c# (Read 1 time) previous topic - next topic

82_marco

Ciao a tutti,
Sono nuovo del forum, sto facendo il mio primo programma che utilizza il LINQ, il mio problema e' questo: devo ricavare il primo valore minore a quello di riferimento tra quelli contenuti in una lista.
Ho cominciato a scriver il codice, ma m sono bloccato a causa di 2 errori che non riesco a risolvere.

il mio codice e' questo:



codice:
        private void button1_Click(object sender, EventArgs e)
        {
            XDocument xmlDoc = XDocument.Load(@"c:\a\casse.xml");

            var casse = (from serbatoio in xmlDoc.Descendants("serbatoio")
                         where serbatoio.Attribute("id").Value == ("serbatoio" + NumSerbatoio.Text)
                         select serbatoio).FirstOrDefault().Descendants("valore")
                        .Select(v => new { Altezza = int.Parse(v.Attribute("Altezza").Value), Litri = int.Parse(v.Attribute("litri").Value) }).ToList();

            var prova = (from altezze in casse
                         orderby altezze.Altezza descending
                         select altezze).ToList();

            int altezza1 = prova.FirstOrDefault<int>(x => x > int.Parse(Altezza.Text));

              //       textBox1.Text = casse.ToString();
        } visual studio mi restituisce questi errori nell ultima riga:

Errore 1 'System.Collections.Generic.List<AnonymousType#1>' non contiene una definizione per 'FirstOrDefault' e l'overload migliore del metodo di estensione 'System.Linq.ParallelEnumerable.FirstOrDefault<TSo urce>(System.Linq.ParallelQuery<TSource>, System.Func<TSource,bool>)' presenta alcuni argomenti non validi

Errore 2 Argomento dell'istanza: impossibile convertire da 'System.Collections.Generic.List<AnonymousType#1>' a 'System.Linq.ParallelQuery<int>'

potere aiutarmi a risolvere il mio problema per favore?

grazie

flz47655

Il compilatore ha ragione, x nell'ultima riga è una classe anonima con le proprietà Altezza e Litri, devi esplicitare quale proprietà vuoi confrontare, ad ogni modo crea una classe "normale" e usa quella che rendi più leggibile il codice

Ciao

82_marco

Ciao in che modo posso esplicitare i valori di altezza?

Cosa intendi per classe "normale"?

flz47655

Semplicemente una classe

Ciao

82_marco

intendi senza usare il linq?
puoi spiegarmi come sistemare quegli errori?

Go Up