Написание функции (метода) для распечатки деталей транзакции - PullRequest
0 голосов
/ 24 июня 2019

Я отобразил детали транзакции с помощью запроса linq.Теперь, как я могу написать функцию (или метод), который принимает идентификатор транзакции в качестве параметра для распечатки деталей этой транзакции?

            var context = new Context();
            var result = (from sale in context.PurchaseHeads
                     join line in context.PurchaseLines on sale equals line.PurchaseHead
                     join staff in context.Staffs on sale.Staff equals staff
                     join store in context.Stores on sale.Store equals store
                     join customer in context.Customers on sale.Customer equals customer
                     join product in context.Products on line.Product equals product
                     group new { line.Quantity, product.Price } by new
                     { sale.ID,
                         StaffName = staff.Name,
                         StoreName = store.Name,
                         CustomerName = customer.Name} into gr
                     select new
                     {
                         TransactionID = gr.Key.ID,
                         StaffName = gr.Key.StaffName,
                         StoreName = gr.Key.StoreName,
                         CustomerName = gr.Key.CustomerName,
                         Total = gr.Sum(x => x.Quantity * x.Price),
                     }).ToList();

 foreach (var item in result)
            {
                Console.WriteLine(item.TransactionID + " " + item.StaffName + " " + item.StoreName + " " + item.CustomerName + " " + item.Total);
            }
            Console.ReadLine();

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Вы можете передать результаты в функцию

public void printTransactionDetails(List<ResultClass> result, int transactionId) {
     var transaction = result.FirstOrDefault(x => x.TransactionId == transactionId);

     if (transaction != null) {
         Console.WriteLine(transaction.TransactionID + " " + transaction.StaffName + " " + transaction.StoreName + " " + transaction.CustomerName + " " + item.Total);
     }
}

или запросить результат внутри функции

public void printTransactionDetails(int transactionId) {
     var context = new Context();
        var result = (from sale in context.PurchaseHeads
                 join line in context.PurchaseLines on sale equals line.PurchaseHead
                 join staff in context.Staffs on sale.Staff equals staff
                 join store in context.Stores on sale.Store equals store
                 join customer in context.Customers on sale.Customer equals customer
                 join product in context.Products on line.Product equals product
                 group new { line.Quantity, product.Price } by new
                 { sale.ID,
                     StaffName = staff.Name,
                     StoreName = store.Name,
                     CustomerName = customer.Name} into gr
                 select new
                 {
                     TransactionID = gr.Key.ID,
                     StaffName = gr.Key.StaffName,
                     StoreName = gr.Key.StoreName,
                     CustomerName = gr.Key.CustomerName,
                     Total = gr.Sum(x => x.Quantity * x.Price),
                 }).FirstOrDefault(c => c.TransactionId == transactionId); 

     if (transaction != null) {
         Console.WriteLine(transaction.TransactionID + " " + transaction.StaffName + " " + transaction.StoreName + " " + transaction.CustomerName + " " + item.Total);
     }
}
0 голосов
/ 24 июня 2019

Вероятно, было бы неплохо сохранить ваш результат в словаре вместо списка, тогда вы можете просто сделать result[<ID>], чтобы перейти к соответствующей информации.

Если вам нужно сохранить егосписок по любой причине:

result.FirstOrDefault(x => x.TransactionID == <ID>)

, если нет записи с данным идентификатором, он вернет ноль.

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