Я использую операции linq для класса (PersonCollection), который расширен из списка объектов, называемых Person.Операции 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 простиралась от Список людей, где я ошибаюсь в своем подходе? будь то в кодировании или общем выборе того, как данные классифицируются
Просто интересно, почему вы должны наследовать непосредственно из списка? –
Или почему вам нужна коллекция (в результате) - часто так, когда «перекачка» из «IEnumerable <>» в коллекцию - вы просто используете ее для перечисления. Если вы разместите больше кода, мы сможем помочь больше – NSGaga
@CuongLe Идея была гибкой: ну это класс, который выполняет операции над списком людей, поэтому я подумал, что я бы расширил список, так что я могу добавить некоторые функции в этот класс , а также применять операции linq к объекту класса в другом месте, когда это необходимо.На данный момент, учитывая, что я должен вносить в списки людей, по-видимому, так или иначе, я мог бы просто немного демонтировать класс и сделать его статичным или разместить функции класса человека как статические функции. –
fullface