У меня есть SQL-запрос, который отлично работает в SQL Server. который являетсяОбщая сумма с несколькими предложениями LINQ
SELECT sum(CONVERT(float,[amount]))
FROM [transaction]
where [response_code] = '100' and merchant_id = '14
при преобразовании его в linq это был мой результирующий запрос и исключение, которое я получал. Что я делаю не так?
LINQ =
float count = dbContext.transactions.Where(trx => trx.response_code.Equals("100"))
.Where(trx=>trx.merchant_id.Equals(mid))
.Sum(i => float.Parse(i.amount));
Ошибка =
{System.InvalidOperationException: Could not translate expression 'Table(transaction).Where(trx => trx.response_code.Equals("100")).Where(trx => trx.merchant_id.Equals(Convert(Invoke(value(System.Func`1[System.Nullable`1[System.Int32]]))))).Sum(i => Parse(i.amount))' into SQL and could not treat it as a local expression.
at System.Data.Linq.SqlClient.ObjectReaderCompiler.Generator.Generate(SqlNode node, LocalBuilder locInstance)
at System.Data.Linq.SqlClient.ObjectReaderCompiler.Generator.GenerateBody(ILGenerator generator, SqlExpression expression)
at System.Data.Linq.SqlClient.ObjectReaderCompiler.CompileDynamicMethod(Generator gen, SqlExpression expression, Type elementType)
at System.Data.Linq.SqlClient.ObjectReaderCompiler.Compile(SqlExpression expression, Type elementType)
at System.Data.Linq.SqlClient.SqlProvider.GetReaderFactory(SqlNode node, Type elemType)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.Sum[TSource](IQueryable`1 source, Expression`1 selector)
at WCF_SOAP_REST_Service.Service.totalAcceptedTransactionCount(Nullable`1 mid) in c:\Users\Monet\Documents\Visual Studio 2012\Projects\WCF_SOAP_REST_Service\Service.svc.cs:line 845}
Попробуйте использовать 'плыви; float.TryParse ("value", out a); ' – Karthik
Вы пытались использовать == вместо вызовов функции .Equal? – KnightFox