Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将IQueryable/IEnumerable结果强制转换为自定义模型C#EntityFramework_C#_Entity Framework Core - Fatal编程技术网

如何将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();
}
当然,您可以使用扩展方法来包装它,但是如果您只在一个地方使用此映射,则不需要这样做