我对从名为Person的对象列表扩展而来的Class(PersonCollection)使用linq操作。扩展列表类中的linq操作
public class PersonCollection: List<Person>
{
//various functions
}
public class Person
{
public string name{ get; set; }
public string address { get; set; }
}
本来我是用字符串列表名单来存储这个类是由和LINQ操作将工作
List<List<String>> oldList = GetList();
oldList = (List<List<string>>)oldList .OrderBy(s =>s[index_of_name]).ToList();
这会工作,但我显然想摆脱数据使用究竟是什么概念证明基本上是简单的代码
应用于这些新类的同一类型的LINQ操作不起作用:
people = (PersonCollection)orderedData.OrderBy(s => s.name]).ToList();
这是错误我得到:
Unable to cast object of type 'System.Collections.Generic.List`1[Person]' to type 'PersonCollection'.
如果我投列出它的工作原理,就是用现在
people = (List<Person>)people .OrderBy(s => s.name]).ToList();
我想用我的PersonCollection类从扩展什么IM一个人名单,我的方法在哪里出错?无论是编码还是数据分类的一般选择
只是好奇,为什么你必须直接从列表继承? –
2013-04-08 11:38:59
或者为什么你需要一个集合(因此) - 当从'IEnumerable <>'抽取'到集合时 - 通常是这样 - 你只是用它来枚举。如果你发布更多的代码,我们可以帮助更多 – NSGaga 2013-04-08 12:44:09
@CongLong这个想法是灵活性:它是一个类的人在列表中执行操作,所以我想我会扩大名单,这样我可以添加一些功能,这个类,并在需要时将linq操作应用到别处的类对象。此刻,考虑到我不得不投入人员名单,无论如何,我可能只是稍微拆散课堂,并将其设置为静态或将人员职能作为静态函数放置 –
fullface
2013-04-09 08:16:58