преобразовать перечисляемый список linq в типизированный список - PullRequest
1 голос
/ 16 декабря 2009

У меня следующая проблема:

Я использую linq для фильтрации некоторых данных следующим образом:

var listPerson = (from objPerson in ListPerson
                                 select new
                                 {
                                     objPerson.IdPerson,
                                     objPerson.ApePerson,
                                     objPerson.NomPerson,
                                     objPerson.EdadPerson,
                                     objPerson.Gender
                                 }).Distinct();

Все работает нормально, но проблема в том, когда я пытался привести список ListPerson List к

List<PersonClass>

Как я могу сделать это? Я попробовал:

listPerson.ToList();

Но он выдает исключение (не может конвертировать из IEnumerable в IEnumerable).

Спасибо заранее. Надеюсь, я ясно дал понять.

Ответы [ 4 ]

2 голосов
/ 16 декабря 2009

Вы создаете анонимный тип в своем выражении linq. Вам нужен способ преобразования экземпляров этого анонимного типа в экземпляры PersonClass.

Если ListPerson является IEnumerable<PersonClass>, вы можете просто набрать ListPerson.Distinct().ToList().

1 голос
/ 17 декабря 2009

var listPerson имеет тип IEnumerable , а не IEnumerable .

вместо

select new
{
  objPerson.IdPerson,
  objPerson.ApePerson,
  objPerson.NomPerson,
  objPerson.EdadPerson,
  objPerson.Gender
}

сделать:

select new PersonClass()
{
  IdPerson = objPerson.IdPerson,
  // etc
}

Если вам действительно нужен этот анонимный тип, и чтобы позже преобразовать его в список, вы можете сделать еще один выбор:

listPerson.Select(p => new ListPerson() { IdPerson = p.Person, /* ... */ });

или

listPerson.Select(p => new ListPerson(p.Person, /* ... */ ));
1 голос
/ 16 декабря 2009

Я предполагаю, что вы используете linq в списке объектов PersonClass, так почему бы просто не выбрать объект. Использование ключевого слова new создает анонимный класс, который не является PersonClass.

var DistPerson = (from objPerson in ListPerson 
                  select objPerson).Distinct(); 

var DistPersonList = DistPerson.ToList();
1 голос
/ 16 декабря 2009

У вас есть коллекция экземпляров анонимного класса , которые созданы с новым {...} синтаксисом. Его нельзя преобразовать в список экземпляров PersonClass без преобразования каждого элемента в экземпляр PersonClass.

...