Ik heb een lijst opgeslagen in resultatenlijst als volgt:
var resultlist = results.ToList();
Het ziet er ongeveer zo uit:
ID FirstName LastName
-- --------- --------
1 Bill Smith
2 John Wilson
3 Doug Berg
Hoe verwijder ik ID 2 uit de lijst?
List<T>
heeft twee methodes die je kunt gebruiken.
RemoveAt(int index) kan gebruikt worden als je de index van het item weet. Bijvoorbeeld:
resultlist.RemoveAt(1);
Of u kunt Remove(T item) gebruiken:
var itemToRemove = resultlist.Single(r => r.Id == 2);
resultList.Remove(itemToRemove);
Als je niet zeker weet of het item echt bestaat, kun je SingleOrDefault gebruiken. SingleOrDefault
zal null
teruggeven als er geen item is (Single
zal een exception gooien als het het item niet kan vinden). Beide zullen een foutmelding geven als er een dubbele waarde is (twee items met hetzelfde id
).
var itemToRemove = resultlist.SingleOrDefault(r => r.Id == 2);
if (itemToRemove != null)
resultList.Remove(itemToRemove);
resultList = results.Where(x=>x.Id != 2).ToList();
Er'is een kleine Linq helper die ik leuk vind die'makkelijk te implementeren is en queries met "where not" voorwaarden een beetje makkelijker leesbaar kan maken:
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();