哪个集合C#for person objs + grouping regex匹配

时间:2015-02-25 17:17:16

标签: c# database performance collections iteration

我正在编写一段代码,用于存储和排序人物对象的集合,其中包含属性:名字,姓氏和身份证。

我希望使用一个泛型集合来迭代/存储和排序这些obj。我一直倾向于SortedDictionary课来实现这一目标。我知道还有其他选项,即SortedListDictionary(也知道Dictionary不会排序,至少不会自行排序)。

理想的密钥是Id(类型String),但我不能保证它们都是唯一的,并且数据是从DB中检索的,所以也有可能人为错误,(id不是表的pk)。

就值而言,我希望存储一个对象本身的数组/列表。因此,当我从集合中提取密钥时,我将获得该人的完整参考(名称+ id)。

现在我还希望根据正则表达式匹配(最后和名字重复)将objs分组在这个列表中,并且我没有经验的头脑的第一件事就是遍历集合(两个for循环,迭代两个)集合,随着数据的增加会很昂贵)。除了理想的集合之外,我还想知道是否有其他有效的方法可以有效地对这些副本进行分组。

1 个答案:

答案 0 :(得分:0)

你真正想要的是使用某种形式的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