我有一个返回公共类的linq查询。在select new中,我访问一个属性Cruising through entities数据库并添加值,但跳转除了它所说的位置:
LINQ to Entities无法识别方法的'System.String ToString()'方法,而且此方法无法转换为商店表达式。
问题在哪里?我可以在Linq中导航。选择linq到bd导航属性真的吗?我试图用几种方式制作.Sum但我失败了。
我很感激帮助。
感谢
public class prueba
{
public int Id { get; set; }
public string Nombre { get; set; }
public string Email { get; set; }
public string Codigo { get; set; }
public string Total { get; set; }
}
var result = db.cliente
.Where(p => !p.Baja.Value)
.Where(OperacionPedido(operacionPedid, numPedidos))
.Where(OperacionGastado(operacionTot, totGastado))
.Select(p => new prueba
{
Id = p.Id,
Nombre = p.Nombre + " " + p.Apellidos,
Email = p.Email,
Codigo = p.territorio1.Codigo_iso3166_3.Trim(),
Total = p.pedido.Sum(oo=>oo.Total.Value).ToString()
}).OrderBy(p => p.Nombre)
.ToList();
答案 0 :(得分:0)
使用SqlFunctions.StringConvert
代替ToString
,以便您的Sum查询
Total = p.pedido.Sum(oo=>oo.Total.Value).ToString()
应该是:
Total = SqlFunctions.StringConvert(p.pedido.Sum(oo=>oo.Total.Value))
使用Entity框架的LINQ查询转换为底层数据源语言(在您的情况下可能是SQL),并且ToString
无法通过Entity框架转换为SQL。这就是提供SqlFunctions.StringConvert
的原因。
在String
类型中存储数值不是一个好主意,而是应该为您的字段int
使用double
或Total
类型。