Domanda

Sto giocando con le nuove cose di C # 3.0 e ho questo codice (principalmente preso da MSDN ) ma posso solo ottenere vero, falso, vero ... e non il valore reale:

        int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

        var oddNumbers = numbers.Select(n => n % 2 == 1);

        Console.WriteLine("Numbers < 5:");
        foreach (var x in oddNumbers)
        {
            Console.WriteLine(x);
        }

Come posso sistemarlo per mostrare l'elenco di numeri interi?

È stato utile?

Soluzione

Modifica " Seleziona " a un " Where "

    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

    var oddNumbers = numbers.Where(n => n % 2 == 1);

    Console.WriteLine("Odd Number:");
    foreach (var x in oddNumbers)
    {
        Console.WriteLine(x);
    }

Il " Seleziona " Il metodo sta creando un nuovo elenco del risultato lambda per ciascun elemento (vero / falso). Il " Dove " il metodo sta filtrando in base al lambda.

In C #, puoi anche usare questa sintassi, che potresti trovare più chiara:

        var oddNumbers = from n in numbers
                         where n % 2 == 1
                         select n;

che il compilatore traduce in:

var oddNumbers = numbers.Where(n => n % 2 == 1).Select(n => n);

Altri suggerimenti

numbers.Select(n => n % 2 == 1);

Cambia questo in

numbers.Where(n => n % 2 == 1);

Ciò che seleziona è " converti " una cosa all'altra. Quindi, in questo caso, è " Conversione " n a " n% 2 == 1 " (che è un booleano) - quindi ottieni tutto il vero e il falso.

Di solito è usato per ottenere proprietà sulle cose. Ad esempio, se avessi un elenco di oggetti Person e desideri ottenere i loro nomi, lo faresti

var listOfNames = listOfPeople.Select( p => p.Name );

Puoi pensarlo così:

  • Converti l'elenco di persone in un elenco di stringhe, utilizzando il seguente metodo: (p = > p.Name)

Per " selezionare " (nel senso del "filtraggio" della parola) un sottoinsieme di una raccolta, devi usare Where.

Grazie a Microsoft per la terribile denominazione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top