我在一个类(PersonCollection)上使用linq操作,该类是从称为Person的对象列表扩展而来的。
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类,我的方法在哪里出错?无论是编码还是一般选择数据分类方式
参考方案
您的PersonCollection
是List<Person>
,但并非相反。
因此,您不能将List<Person>
强制转换为PersonCollection
。您必须创建一个PersonCollection
类型的新对象
您可以使用构造函数执行此操作:
public class PersonCollection : List<Person>
{
public PersonCollection( List<Person> list )
: base( list )
{
}
}
然后您可以从PersonCollection
构造List<Person>
List<Person> list = people.OrderBy(s => s.name]).ToList();
PersonCollection pc = new PersonCollection( list );
将对象转换为List <object> - c#我看过类似的问题,但没有什么合适的。我有一个碰巧包含列表的对象。我想把它变成我可以列举的东西。例如:object listObject; // contains a List<Something> List<object> list; list = listObject as List<object>; // list c…
将谓词<T>转换为Func <T,bool> - c#我有一个包含成员Predicate的类,希望在Linq表达式中使用该类:using System.Linq; class MyClass { public bool DoAllHaveSomeProperty() { return m_instrumentList.All(m_filterExpression); } private IEnumerable&…
根据激活的Maven配置文件更新战争名称 - java在pom中,我有两个配置文件。测试1测试2现在,我希望根据激活的配置文件更改战争名称。预期结果激活test1配置文件后,战争名称应为prefix-test1.war。激活test1和test2时,战争名称应为prefix-test1-test2.war。如果没有激活任何配置文件,则战争名称应为prefix.war。我的POM文件....<?xml ve…
Java中的“ <<”运算符 - java最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…
如何从地图对象获取列表值 - java我的哈希图中有一个称为“ mastervalue”的对象值。 mastervalue包含ques_id作为键,而array包含score和answer作为值。如何仅获取数组的值(分数和答案)并以List形式返回。String maprule = "department == '2' && topic == …