.net 将ienumerable linq列表转换为类型化列表

.net 将ienumerable linq列表转换为类型化列表,.net,linq-to-objects,.net,Linq To Objects,我有以下问题: 我使用linq以这种方式过滤一些数据: var listPerson = (from objPerson in ListPerson select new { objPerson.IdPerson, ob

我有以下问题:

我使用linq以这种方式过滤一些数据:

var listPerson = (from objPerson in ListPerson
                                 select new
                                 {
                                     objPerson.IdPerson,
                                     objPerson.ApePerson,
                                     objPerson.NomPerson,
                                     objPerson.EdadPerson,
                                     objPerson.Gender
                                 }).Distinct();
一切正常,但问题是当我试图将listPerson列表转换为

List<PersonClass>
但它抛出一个异常,无法从IEnumerable转换为IEnumerable


提前谢谢。我希望我说得很清楚。

您拥有匿名类的实例集合,这些实例是用新的{…}语法创建的。如果不将每个项转换为PersonClass实例,则无法将其转换为PersonClass实例列表。

您拥有使用新{…}语法创建的匿名类实例集合。如果不将每个项转换为PersonClass实例,则无法将其转换为PersonClass实例列表。

我假设您正在PersonClass对象列表上使用linq,那么为什么不选择该对象呢。使用new关键字创建一个匿名类,它不是PersonClass

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

var DistPersonList = DistPerson.ToList();

我假设您正在PersonClass对象列表上使用linq,那么为什么不选择该对象呢。使用new关键字创建一个匿名类,它不是PersonClass

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

var DistPersonList = DistPerson.ToList();

您正在linq语句中创建匿名类型。您需要一种方法将该匿名类型的实例转换为PersonClass的实例

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

var DistPersonList = DistPerson.ToList();

如果ListPerson是一个IEnumerable,您应该能够只执行ListPerson.Distinct.ToList。

您正在linq语句中创建一个匿名类型。您需要一种方法将该匿名类型的实例转换为PersonClass的实例

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

var DistPersonList = DistPerson.ToList();

如果ListPerson是一个IEnumerable,您应该能够只执行ListPerson.Distinct.ToList。

var ListPerson的类型是IEnumerable,而不是IEnumerable

而不是

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

如果您确实需要该匿名类型,并且以后要将其转换为列表,则可以执行其他选择:

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


变量listPerson的类型为IEnumerable,而不是IEnumerable

而不是

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

如果您确实需要该匿名类型,并且以后要将其转换为列表,则可以执行其他选择:

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