繁体   English   中英

如何按 Razor 页面中的另一个列表过滤列表?

[英]How do I filter a list by another list in a Razor page?

'transactions' 包含交易记录列表...

var transactions = from t in _context.Transaction
                            .Include(t => t.Account)
                            .Include(t => t.Account.AccountOwner)
                            select t;

'SelectedAccountOwners' 是基于多选框的字符串列表...

[BindProperty(SupportsGet = true)]
public List<string> SelectedAccountOwners { get; set; }

如何过滤“交易”,以便仅保留“SelectedAccountOwners”列表中具有 Account.AccountOwner.Name 的记录?

索引.cshtml.cs

namespace PersonalFinance_v0._1.Pages.Transactions
{
    public class IndexModel : PageModel
    {
        private readonly PersonalFinance_v0_1.Data.PersonalFinance_v0_1Context _context;

        public IndexModel(PersonalFinance_v0_1.Data.PersonalFinance_v0_1Context context)
        {
            _context = context;
        }

        public IList<Transaction> Transaction { get;set; }

        public IList<Transaction> FilterOutput { get; set; }

        [BindProperty(SupportsGet = true)]
        public List<string> SelectedAccountOwners { get; set; }

        [BindProperty(SupportsGet = true)]
        public string groupNumber { get; set; }

        public async Task OnGetAsync()
        {
            var accountOwnerQuery = from a in _context.AccountOwner
                                    orderby a.Name
                                    select a.Name;

            var accountQuery = from a in _context.Account
                               orderby a.Name
                               select a.Name;

            var transactions = from t in _context.Transaction
                                .Include(t => t.Account)
                                .Include(t => t.Account.AccountOwner)
                               select t;

            if (SelectedAccountOwners.Any())
            {
                Debug.Print("Filter Transactions by Selected Owners");
            }

            if (!string.IsNullOrEmpty(groupNumber))
            {
                transactions = transactions.Where(t =>     t.GroupNumber.Equals(Convert.ToInt32(groupNumber)));
            }

            ViewData["AccountOwners"] = new SelectList(await     accountOwnerQuery.Distinct().ToListAsync());

            ViewData["Accounts"] = new SelectList(await accountQuery.Distinct().ToListAsync());

            Transaction = await transactions
                .OrderBy(t => t.Date).ThenBy(t => t.GroupNumber)
                .ToListAsync();
        }
    }
}

您可以在Where子句中使用Contains 像这样的东西:

if (SelectedAccountOwners.Any())
{
    transactions = transactions.Where(t => SelectedAccountOwners.Contains(t.Account.AccountOwner.Name));
}

如何分离列表<object>在 razor 查看<div id="text_translate"><p>我从 controller 示例 1 和示例 2 将具有两种不同类型的列表传递给我的视图。 我正在遍历列表以显示其内容。 我可以在 Object 列表中看到两个列表,[0]-5 条目和 [1]-4 条目。 第一个条目是我的 Example1Deutil,第二个是我的 Example2Detail。</p><p> 我想要做的是通过检查类型在一个表上构建Example1,在另一个表上构建Example2。 我知道它们属于 Object 类型,因此试图弄清楚如何获得它们的原始类型。 所以类型检查工作正常。</p><p> 编辑:我传入的是Example1Deatil 和Example2Detail 类型的两个List 之一。 它们都在传入的 List(object) 中。</p><pre> @foreach (var item in Model) { //Edit: This is how I got my List&lt;Object&gt; that contained my two // List of List&lt;Example1&gt; and List&lt;Example2&gt; to work. foreach(var result in item as IEnumerable&lt;object&gt; // This was the problem ^^^^^^^^^^^^^^^^^^^^^ // The list in the list where just type object and not a List of Objects. // and now everything is working. Thank you to those who helped. if (result is Models.Example1Models.Example1Detail) { &lt;table&gt; //Example1 contents are different than Example2's contents. &lt;/table&gt; } if (result is Models.Example2Models.Example1Detail) { &lt;table&gt; //Example2 Contents &lt;/table&gt; }</pre></div></object>

[英]how do I Separating a List<Object> in razor View

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在C#中过滤包含其他列表的列表? 如何在 Blazor 中创建 Razor 页面列表 如何通过另一个列表过滤列表 如何使用linq从另一个列表中过滤一个列表 C# Linq 如何使用 object 的数据筛选列表并将结果存储在另一个列表中? 如何分离列表<object>在 razor 查看<div id="text_translate"><p>我从 controller 示例 1 和示例 2 将具有两种不同类型的列表传递给我的视图。 我正在遍历列表以显示其内容。 我可以在 Object 列表中看到两个列表,[0]-5 条目和 [1]-4 条目。 第一个条目是我的 Example1Deutil,第二个是我的 Example2Detail。</p><p> 我想要做的是通过检查类型在一个表上构建Example1,在另一个表上构建Example2。 我知道它们属于 Object 类型,因此试图弄清楚如何获得它们的原始类型。 所以类型检查工作正常。</p><p> 编辑:我传入的是Example1Deatil 和Example2Detail 类型的两个List 之一。 它们都在传入的 List(object) 中。</p><pre> @foreach (var item in Model) { //Edit: This is how I got my List&lt;Object&gt; that contained my two // List of List&lt;Example1&gt; and List&lt;Example2&gt; to work. foreach(var result in item as IEnumerable&lt;object&gt; // This was the problem ^^^^^^^^^^^^^^^^^^^^^ // The list in the list where just type object and not a List of Objects. // and now everything is working. Thank you to those who helped. if (result is Models.Example1Models.Example1Detail) { &lt;table&gt; //Example1 contents are different than Example2's contents. &lt;/table&gt; } if (result is Models.Example2Models.Example1Detail) { &lt;table&gt; //Example2 Contents &lt;/table&gt; }</pre></div></object> 如何在值列表上过滤DataRows? 如何在 Razor 视图页面上显示分组列表? 如何从剃刀页面访问列表属性 如何使用List <String>变量过滤强类型列表
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM