【问题标题】:Filter on Unequal Hash Set List过滤不等哈希集列表
【发布时间】:2021-04-22 19:22:30
【问题描述】:

我有哈希集 1-7。

这些Hashset响应9个priorityCode;

Hash Set Value 1 表示 1、2 和 3

Hash Set 是过滤器的值,除了 Hash Set 中的第一个值对应三个优先级代码。

如何过滤我的列表?有什么方法可以基本上做一个“如果 hashSet 的值为 1 将其转换为 priorityCode 1-3?

这是它过去的工作方式,但设计更改为表示 1-7,而在数据库/后端中设置的优先级代码值保持不变。

   private static IEnumerable<TabularScheduledItemViewModel> FilterByPriority(
            ICollection<int> hashSet,
            IEnumerable<TabularScheduledItemViewModel> jobList)
        {
                
            if (hashSet.Contains(1))
            {
              
            }
            
            return priorityFilter.Count == 0
                ? jobList
                : jobList.Where(c => priorityFilter.Any(o => o == c.PriorityCode));
        }

用户界面的外观

【问题讨论】:

    标签: c# hashset


    【解决方案1】:

    您的代码中没有任何东西看起来像哈希集。据我了解这个问题,您收到来自数据库的 1..9 范围内的数字集合,并且您希望通过将前 3 个数据库值折叠为 1 并移动,将其映射到 UI 的范围 1..7其余的下来。你可以这样做,例如在你的函数开始处有一个新行:

    var mapped = hashSet.Select(i => i <= 3 ? 1 : i - 2).ToHashSet();
    

    然后使用mapped 而不是hashSet。请注意,这为您提供了一个真正的哈希集,因此输入中的重复值将被折叠。如果您不希望这样做,请改用.ToList().ToArray()

    【讨论】:

    • 私有静态 IEnumerable FilterByPriority(IEnumerable hashSet, IEnumerable jobList) { HashSet?映射 = hashSet.Select(i => i mapped.Any(o => o == c.PriorityCode)); } 惊人的!这很好用
    猜你喜欢
    • 2016-10-04
    • 2016-05-19
    • 1970-01-01
    • 2014-08-19
    • 2023-03-31
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    相关资源
    最近更新 更多