арифметические операторы в linq - PullRequest
1 голос
/ 08 сентября 2011

делать арифметические операторы не допускается в Linq. Это дает ошибку + не может применяться к лямбда-выражению. CostperResponse.Cost имеет десятичный тип данных

        var costperrespone= from v in lstSale
                                 group v by v.ActionGroupName into g
                                 select new CostperResponse
                                 {
                                     ActionGroupName = g.Key,
                                     Cost = ((x => Convert.ToDecimal(x.ResponseROCount))) / ((x => Convert.ToDecimal(x.ResponseWPAmount)) + (x => Convert.ToDecimal(x.ResponseWPAmount)))
                                 };

запрос sqlserver:

     select SUM((cast(isnull(response_ro_count,0) as decimal))/(cast(isnull(response_cp_amount,0)as decimal) + cast(isnull(response_wp_amount,0)as decimal))) , action_group_name from GM_Tempdata where cast(response_ro_count as decimal)>0 group by action_group_name

1 Ответ

0 голосов
/ 08 сентября 2011
Cost = ((x => Convert.ToDecimal(x.ResponseROCount))) / ((x => Convert.ToDecimal(x.ResponseWPAmount)) + (x => Convert.ToDecimal(x.ResponseWPAmount))) 

"означает"

Cost = (somefunc(x) {Convert.ToDecimal(x.ResponseROCount)))} 
/ (anotherFunc(x) { Convert.ToDecimal(x.ResponseWPAmount))} 
+ lastFunc(x) {Convert.ToDecimal(x.ResponseWPAmount)})) 

Я не совсем уверен, что вы хотите назначить на стоимость?

Возможно, вы имели в виду что-то вроде

Cost = Convert.ToDecimal(v.ResponseROCount) / Convert.ToDecimal(v.ResponseWPAmount) + Convert.ToDecimal(v.ResponseWPAmount)

Но поскольку вы сгруппировались, вам нужно будет использовать агрегат, такой как Sum () и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...