如何显示链接到用户列的表格中的金额

问题描述 投票:0回答:1

我有两个表,一个用户和一个事务。

Users             Transactions

| Id | Name  |   | Id | TranId  |UserId  | Amount |
| -- | ------|   | -- | ------  |------  | ------ |
| 1  | John  |   | 1  | 1       | 2      | -100   |
| 2  | Jane  |   | 2  | 1       | 1      |  100   |

我有一个表格,我想在其中显示每笔交易并显示每个用户的金额。

我可以对交易进行分组,但我似乎无法在正确的列中显示金额。

使用我当前的代码,Jane 列下显示 100,但对于任何其他用户,它只显示“N/A”

我的控制器

using (var context = new SharedExpensesEntities())
{
    transactionsList = context.Transactions.ToList();
    usersList = context.Users.ToList();
}

var viewModel = new TransactionListModel
        {
            TransactionList = transactionsList.GroupBy(x => x.TranId)
                .Select(g => new Transaction
                {
                    Id = g.LastOrDefault().Id,
                    TranId = g.Key,
                }).ToList(),

            UserList = usersList
        };

foreach (var transaction in viewModel.TransactionList)
{
    foreach (var user in viewModel.UserList)
    {
        var userTransaction = transactionsList.FirstOrDefault(t => t.UserId == user.Id && t.TranId == transaction.TranId);

        if (userTransaction != null)
        {
            transaction.UserId = user.Id;
            transaction.Amount = userTransaction.Amount;
        }
    }
}

我的cshtml:

<table class="table">
    <tr class="table-header">
        <th>
            Id
        </th>
        <th>
            TransId
        </th>
        @foreach (var user in Model.UserList)
        {
            <th>
                @user.Name
            </th>
        }
    </tr>
    @foreach (var item in Model.TransactionList)
    {
        <tr class="user-item" data-bs-toggle="modal" data-bs-target="#editUserModal">
            <th>@item.Id</th>
            <th>@item.TranId</th>

            @foreach (var user in Model.UserList)
            {
                <th>@(Model.TransactionList.FirstOrDefault(t => t.UserId == user.Id)?.Amount != null ? string.Format("{0:N2}", Model.TransactionList.FirstOrDefault(t => t.UserId == user.Id).Amount) : "N/A")</th>
            }
        </tr>
    }
</table>
sql-server asp.net-mvc razor web-applications
1个回答
0
投票

原因是您的表格中的

null
Amount
代表您感兴趣的一些记录。您可以使用
.Where(item => item.Amount != null)

过滤掉它们
© www.soinside.com 2019 - 2024. All rights reserved.