Tengo una clase abstracta llamada Agrupación. Tengo una subclase llamada GroupingNNA.Problema con la herencia y Lista <>
public class GroupingNNA : Grouping {
// blah blah blah
}
Tengo una lista que contiene elementos de tipo GroupingNNA, pero en realidad es declarado para contener elementos de tipo de agrupación.
List<Grouping> lstGroupings = new List<Grouping>();
lstGroupings.Add(
new GroupingNNA { fName = "Joe" });
lstGroupings.Add(
new GroupingNNA { fName = "Jane" });
El problema: La siguiente consulta LINQ sopla en mí por el hecho de que lstGroupings se declara como Lista < Agrupación> FName y es una propiedad de GroupingNNA, no agrupar.
var results = from g in lstGroupings
where r.fName == "Jane"
select r;
Ah, y esto es un error del compilador, no un error de tiempo de ejecución. Gracias de antemano por cualquier ayuda en este caso!
Más información: Aquí está el método real que no compilará. OfType() corrigió la consulta LINQ, pero al compilador no le gusta el hecho de que estoy tratando de devolver el tipo anónimo como una lista < Agrupando>.
private List<Grouping> ApplyFilterSens(List<Grouping> lstGroupings, string fSens) {
// This works now! Thanks @Lasse
var filtered = from r in lstGroupings.OfType<GroupingNNA>()
where r.QASensitivity == fSens
select r;
if (filtered != null) {
**// Compiler doesn't like this now**
return filtered.ToList<Grouping>();
}
else
return new List<Grouping>();
}
¡Gracias! Estoy un paso más cerca ahora. Sin embargo, el compilador no está contento ahora porque estoy tratando de devolver el tipo anónimo como una lista < Grouping>. Haré una edición de mi publicación original con más código para que pueda ver de lo que estoy hablando. Gracias de nuevo. – Jagd