【问题标题】:Which collection C# for person objs + grouping regex matches哪个集合 C# for person objs + grouping regex 匹配
【发布时间】:2015-02-25 17:17:15
【问题描述】:

我正在编写一段代码,该代码将存储人员对象的集合并对其进行排序,这些对象具有以下属性:名字、姓氏和 ID。

我希望使用一个通用集合来迭代/存储和排序这些对象。我一直倾向于 SortedDictionary 类来实现这一点。我知道还有其他选项,即SortedListDictionary(也知道Dictionary 不会排序,至少不会单独排序)。

理想的键是Id(类型为String),但我不能保证它们都是唯一的,并且数据是从数据库中检索的,因此也存在人为错误的可能性, (id不是表的pk)。

就值而言,我希望存储对象本身的数组/列表。所以当我从集合中拉出一把钥匙时,我会得到那个人的完整参考(姓名+身份证)。

现在我还希望根据正则表达式匹配(姓和名重复)对这个列表中的 obj 进行分组,而我没有经验的第一件事就是遍历集合(两个 for 循环,遍历两个集合,随着数据的增加,这将是昂贵的)。除了理想的集合是什么之外,我还想知道是否有其他有效的方法可以有效地对这些 dup 进行分组。

【问题讨论】:

    标签: c# database performance collections iteration


    【解决方案1】:

    您真正想要的是使用某种形式的 LINQ(不是 LINQ to SQL,因为它是 DAL 和 LINQ 的混蛋)。

    例如,您可以将信息存储在 XML 中,并使用 LINQ to XML。信息可以作为实体收集并使用 LINQ to Entities。您还可以将 LINQ to Objects 与任何使用 IEnumerable 的集合一起使用。一个简单的列表就可以了。

    采用这种方式,您不必担心创建某种类型的派生键来查询对象组或对它们进行排序。您可以简单地拉取对象集合,然后根据需要进行切片、切块、过滤等。

    是的,您可以将 Regex 与 LINQ 结合使用:https://msdn.microsoft.com/en-us/library/bb882639.aspx

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多