为不工作的匿名类型属性提供别名

本文关键字:属性 别名 类型 工作 | 更新日期: 2023-09-27 18:10:44

我有两个同名的属性:

List<CustomerWithCountry> customersList = CustomerEntity.LoadCustomersSubsetForCriteria(null, 0, 100, null)
.Select(c => new { c.CODE, c.NAME, c.COUNTRY.NAME }).ToList();

c.Name和c.Country.Name具有相同的名称有问题。

所以我试着给c。country。name一个别名:
.Select(c => new { c.CODE, c.NAME, CountryName = c.COUNTRY.NAME }).ToList();

给出如下错误:

错误3无法隐式转换类型'System.Collections.Generic.List<AnonymousType#3>'到'System.Collections.Generic.List'

为不工作的匿名类型属性提供别名

如果没有别名,该错误也应该存在,因为您选择了匿名类型,并且您试图将ToList的结果分配给List<CustomerWithCountry>。您需要将结果投影到您的类CustomerWithCountry

所以在你的查询中应该是:

select (c=> new CustomerWithCountry() {.....

但是请记住,如果你的类来自实体框架或LINQ到SQL,那么你不能投射到那种类型。

创建新的CustomerWithCountry对象

List<CustomerWithCountry> customersList =
           CustomerEntity.LoadCustomersSubsetForCriteria(null, 0, 100, null)
              .Select(c => new CustomerWithCountry{ 
                        CODE= c.CODE, 
                        NAME= c.NAME, 
                        CountryName = c.COUNTRY.NAME })
              .ToList();