Ho una lista memorizzata in resultlist come segue:
var resultlist = results.ToList();
Sembra qualcosa del genere:
ID FirstName LastName
-- --------- --------
1 Bill Smith
2 John Wilson
3 Doug Berg
Come faccio a rimuovere l'ID 2 dalla lista?
List<T>
ha due metodi che potete usare.
RemoveAt(int index) può essere usato se conosci l'indice dell'elemento. Per esempio:
resultlist.RemoveAt(1);
Oppure potete usare Remove(T item):
var itemToRemove = resultlist.Single(r => r.Id == 2);
resultList.Remove(itemToRemove);
Quando non siete sicuri che l'elemento esista davvero, potete usare SingleOrDefault. SingleOrDefaultrestituirà
nullse non c'è un elemento (
Singlelancerà un'eccezione quando non riuscirà a trovare l'elemento). Entrambi lanceranno quando c'è un valore duplicato (due elementi con lo stesso
id`).
var itemToRemove = resultlist.SingleOrDefault(r => r.Id == 2);
if (itemToRemove != null)
resultList.Remove(itemToRemove);
resultList = results.Where(x=>x.Id != 2).ToList();
C'è un piccolo helper Linq che mi piace e che è facile da implementare e può rendere le query con condizioni "where not" un po' più facili da leggere:
public static IEnumerable<T> ExceptWhere<T>(this IEnumerable<T> source, Predicate<T> predicate)
{
return source.Where(x=>!predicate(x));
}
//usage in above situation
resultList = results.ExceptWhere(x=>x.Id == 2).ToList();