C#查询仅取Id和Name后,无法添加至OrganizationModel列表的解决方法
问题修复方案
你遇到的错误是因为查询返回的是匿名类型,但orgList是List<OrganizationModel>类型的集合,两者类型不兼容导致无法直接添加。以下是两种符合需求的修复方式:
方式一:直接构造OrganizationModel实例
在Select中直接创建OrganizationModel对象并赋值需要的字段,这样查询结果就是目标类型,可直接添加到列表:
var orgList = new List<OrganizationModel>(); var organization = await dbContext.Organization .Select(x => new OrganizationModel { Id = x.Id, Name = x.Name }) .FirstOrDefaultAsync(x => x.Name == xlOrganization); if (organization != null) // 避免添加null值 { orgList.Add(organization); }
方式二:利用构造函数(如果类中已定义)
如果OrganizationModel类有接收Id和Name的构造函数,比如:
public class OrganizationModel { public int Id { get; set; } public string Name { get; set; } public OrganizationModel(int id, string name) { Id = id; Name = name; } }
可以简化为构造函数初始化:
var orgList = new List<OrganizationModel>(); var organization = await dbContext.Organization .Select(x => new OrganizationModel(x.Id, x.Name)) .FirstOrDefaultAsync(x => x.Name == xlOrganization); if (organization != null) { orgList.Add(organization); }
两种方式都只会从数据库查询Id和Name字段,满足你不需要其他字段的需求,同时解决了类型不匹配的错误。
内容的提问来源于stack exchange,提问作者Cypher
相关产品推荐
相关产品推荐

