Cómo preguntar ¿Hay exactamente un elemento que satisfaga la condición en LINQ?

 C Programming >> Programación C >  >> Tags >> LINQ
Cómo preguntar ¿Hay exactamente un elemento que satisfaga la condición en LINQ?

Podrías hacer:

bool onlyOne = source.Where(/*condition*/).Take(2).Count() == 1

Lo que evitará que count enumere una secuencia grande innecesariamente en el caso de múltiples coincidencias.


La forma más sencilla es simplemente usar Count. Single no funcionará para usted, porque arroja una excepción si no hay solo ese elemento único.

LBushkin sugiere (en los comentarios) usar SequenceEqual para comparar una secuencia con otra. Puede usar eso omitiendo el primer elemento con Skip (1) y comparando la secuencia resultante con una secuencia vacía como la que puede obtener de Empty