我对where方法和泛型列表有问题。
public class TestList : List<Test2>
{
public TestList getWork()
{
return (TestList)this.Where(a => a.ID=10);
}
}
出现以下错误:无法将"WhereListIterator `1[Test2]"类型的对象强制转换为"TestList"类型。
示例2,为什么使用这样的代码不是一个好主意:
public class Parent : List<Child>
{
public Parent GetChildOf(Child child)
{
...
return childofchild;
}
public Parent GetParentOf(Child child)
{
...
}
}
在control.net的代码中,我这样使用我的类:
parents.GetParentOf(childselected).GetParentOf(otherchild);....
谢谢你的帮助。
即使TestList是List<Test2>
,但这并不意味着List<Test2>
都是TestList
。您需要创建一个新的类实例,而不仅仅是尝试强制转换LINQ结果。
试试这个:
var testList = new TestList();
testList.AddRange(this.Where(a => a.ID=10));
return testList;
不过,Servy的评论是正确的,即创建自己的扩展List<>
的集合类型可能是个坏主意。如果你想要一个包含一堆Test2
和其他信息的类,最好创建一个将这些部分作为单独属性的类:
public class TestList
{
public string SomeRandomInfo {get;set;}
public List<Test2> Test2s {get;set;}
}