为不工作的匿名类型属性提供别名
本文关键字:属性 别名 类型 工作 | 更新日期: 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();