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.Enumerableclase estática para LINQ to Objects, ySystem.Linq.Queryablepara 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.Linqes específico de LINQ to SQL.Any()o losCount()métodos en Linq funcionan solo para tipos genéricos.Si tiene un simple
IEnumerablesin un tipo, intente usarIEnumerable<object>en lugar.
fuente
IEnumerationno tiene un método llamadoCount(). Es solo una especie de "secuencia de elementos". Úselo, por ejemplo,Listsi 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