Сумма Linq в контроллере и перейти к View ASP NET CORE 2.1 - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу спросить, как написать linq для суммирования в контроллере и добавить для просмотра дочерней таблицы ""

Моя модель 1

public class ChartAccount
{
    [Key]
    public int ChartId { get; set; }
    public int Kodeakun { get; set; }
    public string Namaakun { get; set; }
    public int Saldo { get; set; }
    public virtual ICollection<Transaction> Transaksilist { get; set; }
}

модель 2

public class Transaction
{   [Key]
    public int Id { get; set; }
    public string NoBukti { get; set; }
    public DateTime Tanggal { get; set; }
    public string Deskripsi { get; set; }

    [DisplayFormat(DataFormatString = "{0:C}")]
    public long Debit { get; set; }
    [DisplayFormat(DataFormatString = "{0:C}")]
    public long Credit{ get; set; }

    public int? ChartId { get; set; }
    public ChartAccount Transactions { get; set; }
}

Я также хочу заполнить таблицу saldo значением в дебетах и ​​кредитах

В представлении chartaccount (индекс) (я заполняю начальным значением при миграции)

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Kodeakun)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Namaakun)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Saldo)
        </td>

это сгенерировано так

|Kodeakun|Namaakun  |Saldo|
|10000   |Asset     |0    |
|20000   |Utang     |0    |
|30000   |Modal     |0    |
|40000   |Pendapatan|0    |

в представлении транзакции (индекс)

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Transactions.Kodeakun)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Deskripsi)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Debit)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Credit)
        </td>

он сгенерирован следующим образом

|Kodeakun|Debit     |Credit   |Deskripsi|
|10000   |1.000.000 |0        |Kas      |
|20000   |0         |1.000.000|Utang    |

Я хочу написать linq в контроллере.какой метод я предполагаю написать, в индексе или детализации в контроллере chartaccount?

    // GET: ChartAccounts
    public async Task<IActionResult> Index()
    {
        return View(await _context.Accounts.ToListAsync());
    }

    // GET: ChartAccounts/Details/5
    public async Task<IActionResult> Details(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var chartAccount = await _context.Accounts
            .FirstOrDefaultAsync(m => m.ChartId == id);
        if (chartAccount == null)
        {
            return NotFound();
        }

        return View(chartAccount);
    }

Я пытался, но я немного не понимаю, как перейти к просмотру

Код, который я пытаюсь в деталях контроллера

        //public DbSet<Transaction> Transaksi { get; set; }
        //public DbSet<ChartAccount> Accounts { get; set; }
        var a = from s in _context.Transaksi
                group s by s.Transactions.Kodeakun;

Так что в основном я хочу, чтобы я вставил данные в транзакцию и сохранил их.Я также хочу обновить данные chartaccount в примере

|Kodeakun|Debit     |Credit   |Deskripsi|
|10000   |1.000.000 |0        |Kas      |
|20000   |0         |1.000.000|Utang    |
|10000   |0         |1.000.000|Kas      |
|10000   |1.000.000 |0        |Kas      |

у него дебетовый кредит.поэтому мой счет в диаграмме должен выглядеть так:

|Kodeakun|Namaakun  |Saldo    |
|10000   |Asset     |1.000.000|
|20000   |Utang     |1.000.000|
|30000   |Modal     |0        |
|40000   |Pendapatan|0        |

В основном, дебет равен (+), а кредит - (-), поэтому у меня есть вставка 2 Kas, которая в дебете и кредите, и результат в saldo равен 1.000.000 (2.000.000-1.000.000)

Извините за мой английский

1 Ответ

0 голосов
/ 20 сентября 2018

Вы должны использовать GroupBy с суммой и построить новый объект:

data.GroupBy(el => el.Kodeakun).Select(group => new ChartAccount
        {
            Saldo = group.Sum(item => item.Debit) - group.Sum(item => item.Credit),
            Kodeakun = group.Key,
            Namaakun = // take it from appropriate field
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...