Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    32

    [c#] cancellare un elemento da una List<T>

    Ciao ragazzi, ho necessità di cancellare un elemento da una lista, ma non ci riesco.

    La lista è una lista di esami, è fatta così:
    public static List<Esame> ListaEsami = new List<Esame>();
    ed esame è un oggetto con i vari attributi: nome, data, voto ecc

    Ad esempio, voglio cancellare l'esame "analisi"

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    Il metodo remove rimuove un elemento T da una List<T>. Puoi usare linq per trovare l'elemento da eliminare:

    codice:
    ListaEsami.Remove(ListaEsami.FirstOrDefault(l => l.NomeEsame.Equals("Analisi")));
    Puoi usare oltre a FirstOrDefault altri 3 metodi in base alle esigenze.

    FirstOrDefault : Restituisce il primo esame che risponde ai criteri di ricerca se non lo trova restituisce null

    First: come sopra ma se non trova nulla lancia una eccezzione.

    SingleOrDefault: Restituisce l'esame solo se a quei criteri corrisponde un solo esame in lista altrimenti restituisce null.

    Single: Come sopra ma invece di restituire null viene lanciata una eccezione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    32
    Gentilissimo, funziona perfettamente..

    Per comprendere meglio, si potrebbe porre la query richiesta, nel formato, tipo:

    var q = from ListaEsami
    where ??

    Come andrebbe posta?

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    codice:
    var q = from e in Listaesami where e.Title.Equals("Analisi");
    
    ListaEsami.Remove(q.FirstOrDefault());
    dopo la prima istruzione q rimane sempre una IQuerable<T> sulla quale poter eseguire ulteriori operazioni o al massimo la si puo enumerare. Per poterla utilizzare bisogna "finalizzare" o in una collection (con ToArray() ToList() ecc.) o in entita T (le quattro che ti ho detto nel post su).

    Detto fra noi, io preferisco la prima sintassi.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.