juin
2007
System.Data.Linq.Table<>
ne supporte pas l’extension method Last. Cependant, comme c’est un IEnumerable, l’erreur n’intervient qu’à l’exécution et non à la compilation. L’erreur est la suivante : « The query operator ‘Last’ is not supported. »
Cependant on peut feinter : passer par l’extension method Last sur IEnumerable :
((IEnumerable<Person>)(dataContext.Persons)).Last();
ou
dataContext.Persons.ToList().Last();
En faisant cela, on comprend pourquoi ce n’est pas supporté par System.Data.Linq.Table<>
. En effet, le dernier élément n’est pas le dernier élément ajouté !
Pour info, la méthode GetEnumerator() de Table<>
fait la chose suivante :
{
return ((IEnumerable<T>) this.context.Provider.ExecuteQuery(Expression.Constant(this))).GetEnumerator();
}
A noter également que System.Data.Linq.Table<>
supporte l’extension method First !