c#使用skip和take处理从List派生的类

c#使用skip和take处理从List派生的类,c#,list,derived-class,skip,C#,List,Derived Class,Skip,我有以下课程: public class SearchFlightInfoCollList: List<SearchFlightInfoColl> { public bool TwoWays { get; set; } public int TotPages = 1; public int CurPage = 1; } 但操作的结果不再是SearchFlightInfoCollList。 我该怎么做才能舍弃一些项目而取

我有以下课程:

public class SearchFlightInfoCollList: List<SearchFlightInfoColl>
    {
        public bool TwoWays { get; set; }
        public int TotPages = 1;
        public int CurPage = 1;
    }
但操作的结果不再是SearchFlightInfoCollList。
我该怎么做才能舍弃一些项目而取走其他项目,而不必在集合中循环,最终得到与以前相同的类型?

从语义上讲,回溯到原始类对您没有多大好处。我认为调用这些方法时,
TotPages
CurPages
需要更新

因此,您必须实现
Skip
Take
方法。
原始的是扩展方法,所以不需要重写或其他任何东西

例:

公共类SearchFlightInfoCollList:List
{
公共无效跳过(整数计数)
{
//...
}
}

如果您坚持保留
SearchFlightInfoCollList
实例,您将失去Linq和泛型类的很多灵活性。我建议创建一个容器/门面类,该类包含一个
列表
,并具有其他属性。

您需要自己实现它。这就是为什么不经常使用派生列表的原因之一。创建具有
List
属性以及所需的附加属性的类更容易。您需要为SearchFlightInfoCollList创建构造函数,如:
SearchFlightInfoCollList(IQueryable flights)
I已删除派生类,并替换为内部具有列表的类。重构非常简单。
mySearchCollList.skip((curpage-1)*4).take(4);
public class SearchFlightInfoCollList: List<SearchFlightInfoColl>
{
    public void Skip(int count)
    {
        //...
    }
}