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