Tengo el siguiente método:
public bool IsValid
{
get { return (GetRuleViolations().Count() == 0); }
}
public IEnumerable<RuleViolation> GetRuleViolations(){
//code here
}
¿Por qué cuando lo hago .Count()
arriba está subrayado en rojo?
Tuve el siguiente error:
Error 1 'System.Collections.Generic.IEnumerable' no contiene una definición para 'Count' y ningún método de extensión 'Count' aceptando un primer argumento de tipo 'System.Collections.Generic.IEnumerable' podría ser encontrado (¿le falta un usando directiva o una referencia de ensamblado?) c: \ users \ a \ documents \ visual studio 2010 \ Projects \ NerdDinner \ NerdDinner \ Models \ Dinner.cs 15 47 NerdDinner
c#
asp.net
enumerable
aherlambang
fuente
fuente
Respuestas:
Añades:
using System.Linq;
en la parte superior de su fuente y asegúrese de tener una referencia al ensamblaje System.Core.
Count()
es un método de extensión proporcionado por laSystem.Linq.Enumerable
clase estática para LINQ to Objects, ySystem.Linq.Queryable
para LINQ to SQL y otros proveedores fuera de proceso.EDITAR: De hecho, usar
Count()
aquí es relativamente ineficiente (al menos en LINQ to Objects). Todo lo que quiere saber es si hay algún elementos o no, ¿verdad? En ese caso,Any()
se ajusta mejor:public bool IsValid { get { return !GetRuleViolations().Any(); } }
fuente
System.Data.Linq
es específico de LINQ to SQL.Any()
o losCount()
métodos en Linq funcionan solo para tipos genéricos.Si tiene un simple
IEnumerable
sin un tipo, intente usarIEnumerable<object>
en lugar.
fuente
IEnumeration
no tiene un método llamadoCount()
. Es solo una especie de "secuencia de elementos". Úselo, por ejemplo,List
si necesita explícitamente el número de elementos. Si usa Linq, tenga en cuenta que el método de extensiónCount()
puede volver a contar el número de elementos cada vez que lo llame.fuente
Qué tal si:
public bool IsValid { get { return (GetRuleViolations().Cast<RuleViolation>().Count() == 0); } }
fuente