J'ai une liste stockée dans resultlist comme suit :
var resultlist = results.ToList();
Cela ressemble à quelque chose comme ceci :
ID FirstName LastName
-- --------- --------
1 Bill Smith
2 John Wilson
3 Doug Berg
Comment supprimer l'ID 2 de la liste ?
List<T>
possède deux méthodes que vous pouvez utiliser.
La méthode [RemoveAt(int index)][1] peut être utilisée si vous connaissez l'index de l'élément. Par exemple :
resultlist.RemoveAt(1);
Ou vous pouvez utiliser [Remove(T item)][2] :
var itemToRemove = resultlist.Single(r => r.Id == 2);
resultList.Remove(itemToRemove);
Si vous n'êtes pas sûr que l'élément existe vraiment, vous pouvez utiliser [SingleOrDefault][3]. SingleOrDefault
retournera null
s'il n'y a pas d'élément (Single
lèvera une exception s'il ne trouve pas l'élément). Les deux lanceront une exception s'il y a un doublon (deux éléments avec le même id
).
var itemToRemove = resultlist.SingleOrDefault(r => r.Id == 2);
if (itemToRemove != null)
resultList.Remove(itemToRemove);
[1] : http://msdn.microsoft.com/en-us/library/5cw9x18z.aspx [2] : http://msdn.microsoft.com/en-us/library/cd666k3e.aspx [3] : http://msdn.microsoft.com/en-us/library/bb549274.aspx
resultList = results.Where(x=>x.Id != 2).ToList();
Il existe une petite aide Linq que j'aime bien, qui est facile à mettre en œuvre et qui peut rendre les requêtes avec des conditions "where not" un peu plus faciles à lire :
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();