【发布时间】:2013-11-19 17:29:22
【问题描述】:
今天我刚刚试用了 LINQ 框架,想知道是否有办法做到以下几点。 我有一个包含街道名称和门牌号码的地址列表。首先,我根据他们的街道名称列出所有地址
list = list.OrderBy(x => x.StreetName)
如果街道名称相同,我也想使用ThenBy-表达式比较门牌号,但问题是门牌号可能由两部分组成:整数(例如 12)和字符串后缀(例如 A) 导致 12A。所以我想对门牌号(int 值)的列表进行排序,然后再对后缀(字符串值)进行排序。我还创建了正则表达式来将 housenumber 拆分为 int- 和 string 值,所以这不是问题,这里是:(\d+) *(\S)* 但我没有遇到这两个值(在某些情况下只有一个作为LINQ 的排序也没有后缀。
我有什么办法吗?
【问题讨论】:
-
按数字后跟字母的整个字符串排序将产生与先数字后字母排序完全相同的结果。
-
也许为门牌号编写一个小的自定义比较器比像那样乱七八糟更容易。但是,尽管如此,比较 @AntP 提到的字符串实际上是您需要的。
-
@AntP 如果按字符串排序 -
"15">"123" -
@Grundy D'oh - 非常正确。
-
你为什么要把这两件事分开?不是每个房子都有门牌号。有些只是有名字。这就是为什么几乎每个网站/系统都有“第一行地址”的原因。假设有一个数字和一个可能的后缀会产生比您需要的更多的工作。