【发布时间】:2011-02-19 07:35:32
【问题描述】:
我有一个名为 Grouping 的抽象类。我有一个名为 GroupingNNA 的子类。
public class GroupingNNA : Grouping {
// blah blah blah
}
我有一个包含 GroupingNNA 类型项目的列表,但实际上被声明为包含 Grouping 类型的项目。
List<Grouping> lstGroupings = new List<Grouping>();
lstGroupings.Add(
new GroupingNNA { fName = "Joe" });
lstGroupings.Add(
new GroupingNNA { fName = "Jane" });
问题:
由于 lstGroupings 被声明为 List
var results = from g in lstGroupings
where r.fName == "Jane"
select r;
哦,这是编译器错误,而不是运行时错误。在此先感谢您对此提供的任何帮助!
更多信息:
这是不会编译的实际方法。 OfType() 修复了 LINQ 查询,但编译器不喜欢我试图将匿名类型作为 List
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>();
}
【问题讨论】:
标签: .net linq inheritance list