如何用where转换列表中的列表泛型



我对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);....

谢谢你的帮助。

即使TestListList<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;}
}

最新更新