2013-06-17 6 views
0

Как изменить значение в запросе, например, как это:как внести изменения в значения в запросе

 return (from cust in entities.vw_WebCustomer 
       where cust.CorporationId == token.CorporationId && 
         cust.Branch == branch && 
         cust.AccountNumber == accountnumber 
       select new CustomerRequest 
         { 
          AccountId = cust.AccountId, 
          AccountNumber = cust.AccountNumber, 
          AreaCode = cust.AreaCode, 
          Branch = cust.Branch, 
          BudgetBalance = (decimal) cust.BudgetBalance, 
          BudgetRate = (decimal) cust.BudgetRate, 
          CareOf = cust.CareOf, 
          City = cust.City, 
          CurrentBalance = (decimal) cust.CurrentBalance, 
          CurrentTankPercentage = (decimal) cust.PercentFull, 
}; 

Я хочу, чтобы проверить значение CurrentTankPercentage к нулю, если cust.PercentFull меньше нуль.

Должен ли я разбить его, чтобы внести в него изменения?

ответ

8

Простейший способ заключается в использовании условного оператора:

select new CustomerRequest 
{ 
    ... 
    CurrentTankPercentage = (decimal) (cust.PercentFull < 0 ? 0 : cust.PercentFull) 
}; 

Другой способ заключается в использовании Math.Max:

select new CustomerRequest 
{ 
    ... 
    CurrentTankPercentage = (decimal) Math.Max(cust.PercentFull,0) 
}; 

Но я считаю, что труднее читать. Я склонен неправильно читать это как «дать CurrentTankPercentage a Максимальное значение 0», что противоположно тому, что он действительно делает.

+0

Условный оператор немного лучше описание. –

+0

@YuriyFaktorovich Согласен. Обновлено. –

+0

Я получаю это, когда использую math.max: System.NotSupportedException: LINQ to Entities не распознает метод 'System.Decimal Max (System.Decimal, System.Decimal)', и этот метод не может быть переведен в выражение store , – ErocM

1

Вы можете попробовать:

CurrentTankPercentage = ((decimal)cust.PercentFull) < 0 ? 0 : ((decimal)cust.PercentFull) 
Смежные вопросы