如何将IQueryable/IEnumerable结果强制转换为自定义模型C#EntityFramework
假设我有一个具有此功能的存储库如何将IQueryable/IEnumerable结果强制转换为自定义模型C#EntityFramework,c#,entity-framework-core,C#,Entity Framework Core,假设我有一个具有此功能的存储库 public async Task<IEnumerable<Contacts>> GetAll() { return await _context.Contacts.ToListAsync(); } 将其放入循环并传递给此新模型: foreach (var item in list) { decp.Add(new ValidationModel
public async Task<IEnumerable<Contacts>> GetAll()
{
return await _context.Contacts.ToListAsync();
}
将其放入循环并传递给此新模型:
foreach (var item in list)
{
decp.Add(new ValidationModel
{
uToken = item.utoken,
Date = item.date_released,
Images = bc.Decrypt(item.Images, item.images_key),
Type = item.Type
});
}
谢谢 因为您正在使用自定义方法解密图像,所以无法将其包含在查询中,因为EF无法将其转换为sql查询 匿名方法将是最好的方法
public async Task<IEnumerable<Contacts>> GetAll()
{
var models = await _context
.Contacts
.Select(contact => new
{
contact.date_released,
contact.utoken,
contact.Images,
contact.images_key,
contact.Type
})
.ToListAsync()
return models
.Select(item => new ValidationModel
{
uToken = item.utoken,
Date = item.date_released,
Images = bc.Decrypt(item.Images, item.images_key),
Type = item.Type
}
.ToList();
}
public异步任务GetAll()
{
var模型=等待上下文
.联系人
.选择(联系人=>新建)
{
contact.date_发布日期,
contact.utoken,
联系方式,图片,
联系方式:按,
联系人。类型
})
.ToListAsync()
返回模型
.选择(项=>new ValidationModel
{
uToken=item.uToken,
日期=item.Date_发布日期,
Images=bc.Decrypt(item.Images,item.Images\u密钥),
类型=项目。类型
}
.ToList();
}
当然,您可以使用扩展方法对其进行包装,但如果您只在一个位置使用此映射,则不需要这样做。因为您使用自定义方法对图像进行解密,您将无法将其包含在查询中,因为EF将无法将其转换为sql查询 匿名方法将是最好的方法
public async Task<IEnumerable<Contacts>> GetAll()
{
var models = await _context
.Contacts
.Select(contact => new
{
contact.date_released,
contact.utoken,
contact.Images,
contact.images_key,
contact.Type
})
.ToListAsync()
return models
.Select(item => new ValidationModel
{
uToken = item.utoken,
Date = item.date_released,
Images = bc.Decrypt(item.Images, item.images_key),
Type = item.Type
}
.ToList();
}
public异步任务GetAll()
{
var模型=等待上下文
.联系人
.选择(联系人=>新建)
{
contact.date_发布日期,
contact.utoken,
联系方式,图片,
联系方式:按,
联系人。类型
})
.ToListAsync()
返回模型
.选择(项=>new ValidationModel
{
uToken=item.uToken,
日期=item.Date_发布日期,
Images=bc.Decrypt(item.Images,item.Images\u密钥),
类型=项目。类型
}
.ToList();
}
当然,您可以使用扩展方法来包装它,但是如果您只在一个地方使用此映射,则不需要这样做