[c#]DbExpression 绑定要求输入的表达式

标签: Linq C#
发布时间: 2017/2/28 22:56:03
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

铸造字节数组到 ienumerable 浮引发此错误的原因吗?

public List<myModel> Get()
{
    List<myModel> data;            
    using (var db = new MyEntities())
    {
        var query = db.Images.OrderBy(x => x.ID).Select(x => new myModel
        {
            Id = x.ID,
            Name = x.Name,
            Bytes = x.Bytes,        
            BytesToFloat = (IEnumerable<float>)x.Bytes
        });
        data = query.ToList();
    }
    return data;
}

public class myModel
{
    public int Id{ get; set; }
    public string Name { get; set; }
    public Byte[] Bytes { get; set; }
    public IEnumerable<float> BytesToFloat { get; set; } 
}

我得到这个错误︰

{"DbExpressionBinding 需要一个输入的表达式与集合 ResultType.\r\nParameter 名称︰ 输入"}

解决方法 1:

你不能显式强制转换到字节数组 IEnumerable<float> 。请尝试使用 .Cast<> 相反︰

BytesToFloat = (IEnumerable<float>)bytes.Cast<float>()

现在你的问题是你不能叫。所以你应将其转换到列表中,然后运行铸铸 <> 对数据库的查询。所以你的函数就变成这样︰

public List<myModel> Get()
{
    using (var db = new myEntities())
    {
        return db.Images.OrderBy(x => x.Id==1).ToList()
            .Select(x => new myModel
            {
                Id = x.Id,
                Name = x.Name,
                Bytes = x.Bytes,        
                BytesToFloat = (IEnumerable<float>)x.Bytes.Cast<float>()
            }).ToList();

    }
}
官方微信
官方QQ群
31647020