2009-11-08 2 views
0

У меня есть 2 таблицы
  1. Клиент
  2. ОперацииПростой математический вопрос с Linq, простой регистрации запросов, Нули и т.д.

Операции могут привести: Кредиты или дебет («C» или ' D 'в поле символов) вместе с полями даты и количества.

я должен рассчитать баланс счета каждого клиента с помощью Linq ... Результат должен также показать баланс 0 для клиентов, которых не совершают операции еще

У меня есть следующие функции с утверждением Linq, но я знаю, это может быть сделано лучше и быстрее, короче, не так ли? Которые будут?

public static double getBalance(ref ClasesDeDatosDataContext xDC, string SSN, 
int xidClient) 
{ 
    var cDebits = 
     from ops in xDC.Operations 
       where (ops.idClient == xidClient) && (ops.OperationCode == 'D') 
       select ops.Ammount; 
    var cCredits = 
       from ops in xDC.Operations 
       where (ops.idClient == xidClient) && (ops.OperationCode == 'C') 
       select ops.Ammount; 
    return (double)(cCredits.Sum() - cDebits.Sum()); 
} 

Спасибо !!!

ответ

0

Я не знаю, если двигатель LINQ к SQL может обрабатывать выражение, но что-то, как это должно быть возможно:

return (
    from ops in xDC.Operations 
    where ops.idClient == xidClient 
    select ops.operationCode == 'C' ? ops.Amount : -ops.Amount 
).Sum(a => a); 

Или возможно:

return (
    from ops in xDC.Operations 
    where ops.idClient == xidClient 
    select new { Sign = ops.operationCode == 'C' ? 1.0 : -1.0, Amount = ops.Amount } 
).Sum(o => o.Sign * o.Amount); 

Если коллекция пуст, метод Sum возвращает ноль, так что заботится о клиентах без транзакций.

Edit:
Исправлены правописание в запросе: Ampont -> Сумма

+0

Я получаю исключение во время выполнения ... Нулевое значение не может быть назначен членом с типом System.Double, который не является обнуляемым тип значения. – Enrique

+0

С какими из них? Может ли поле Amount быть нулевым? Могут ли быть другие операции, кроме «C» или «D»? – Guffa

+0

Привет, Guffa ... проверьте скриншот. Это исключение во время выполнения (некоторые сообщения находятся на испанском языке) ... http://img130.imageshack.us/i/sshot1s.jpg/ – Enrique

 Смежные вопросы

  • Нет связанных вопросов^_^