如何将列表中的列表通用转换为where

时间:2015-03-24 16:30:20

标签: c#

我的方法和通用列表有问题。

    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)
    {
    ...
    }
}

在控制.net中的代码中我使用我的类:

parents.GetParentOf(childselected).GetParentOf(otherchild);....

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

即使TestList List<Test2>,也并不意味着List<Test2>都是TestList。您需要创建类的新实例,而不是仅仅尝试转换LINQ结果。

试试这个:

var testList = new TestList();
testList.AddRange(this.Where(a => a.ID=10));
return testList;
但是,Servy的评论是正确的,创建一个扩展List<>的集合类型可能是个坏主意。如果您想要一个包含大量Test2 s的类以及其他信息,最好创建一个将这些部分作为单独属性的类:

public class TestList
{
    public string SomeRandomInfo {get;set;}
    public List<Test2> Test2s {get;set;}
}
相关问题