gpt4 book ai didi

c# - 扩展列表类上的 linq 操作

转载 作者:行者123 更新时间:2023-12-03 20:30:07 24 4
gpt4 key购买 nike

我对从称为 Person 的对象列表扩展的类 (PersonCollection) 使用 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'.

如果我转换到 List 它会起作用,这就是我现在使用的

    people = (List<Person>)people .OrderBy(s => s.name]).ToList();

我想使用从人员列表扩展的 PersonCollection 类,我的方法哪里出错了?无论是编码还是数据分类方式的一般选择

最佳答案

你的 PersonCollectionList<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 );

关于c# - 扩展列表类上的 linq 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com