IEnumerable的LINQ列表转换为类型列表列表、转换为、类型、IEnumerable

2023-09-06 14:30:40 作者:我深知我该努力了

我有以下问题:

我使用LINQ to滤液这样一些数据:

I'm using linq to filtrate some data in this way:

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

一切工作正常,但问题是当我试图投listPerson列表到

Everything works fine, but the problem is when i tried to cast the listPerson List to a

List<PersonClass>

我怎么能这样做投?我想:

How can i do that cast ? I tried:

listPerson.ToList();

但是,它抛出一个异常(不能自IEnumerable转换为IEnumerable的)。

But it throws an exception (cannot convert from IEnumerable to IEnumerable).

在此先感谢。我希望我自己清楚。

Thanks in advance. I hope i made myself clear.

推荐答案

VAR listPerson的类型的IEnumerable&LT的; COMPILERGENERATEDANONYMOUSTYPE&gt;中并不是一个IEnumerable的&LT; PersonClass&GT;

var listPerson is of type IEnumerable<COMPILERGENERATEDANONYMOUSTYPE>, not a IEnumerable<PersonClass>.

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

做的:

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

如果你真的需要一个匿名类型出现,并在以后转换到一个列表,那么你可以做的另一种选择:

If you really need that anonymous type there, and to convert it to a list later, then you can do another select:

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

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