【发布时间】:2015-01-26 07:38:58
【问题描述】:
在我的代码中,我从用户那里得到一个字符串作为输入,并向他返回一个名称(字符串)列表,这些名称(字符串)包含在用户输入的内部。
我希望按照名字和姓氏中输入的索引对这个列表进行排序,优先于名字。示例:
用户输入字符串:Da
期望的结果: “大卫加尔” “美国爸爸” “亚当·琼斯”
示例说明: “David Gal”是第一位的,因为“Da”在名字中的索引是 0。 “America Dad”排在第二位,因为“Da”也是姓氏中的第一位,但当索引相等时,姓氏的优先级低于名字。 “Adam Jones”排在最后,因为“Da”在他的名字中出现的指数最低。
编辑: 我找到了答案,但我没有足够的声誉来回答自己,所以这里是:
listToSort.OrderBy(contact =>
contact.Name
.Split(' ')
.Select((WordInName, WordIndex) =>
(uint)WordInName.IndexOf(SearchString, StringComparison.CurrentCultureIgnoreCase) + WordIndex / ((double)WordIndex + 1)
)
.Min()
);
【问题讨论】:
-
list.Where(你的代码在这里).OrderBy(你的代码在这里),用你自己的尝试(如果需要,也可以添加.ToList())。 -
用户输入中的名称是如何分隔的?
-
我从用户输入创建正则表达式,如下所示:wordRegex = new BsonRegularExpression(word + ".*", "im");。比,使用 mongodriver 库我做这个查询: Query
.EQ(x => x.Name, wordRegex) -
问题现已结束。如果/当它重新打开时,您需要将问题的答案作为实际答案发布,并从问题中删除您的答案。它与您现在无法发布的声誉无关。有些人在遇到问题时会使用太宽泛接近的理由,而这些问题说明了他们想要做什么却没有付出任何努力。我不认为您的问题太宽泛,但似乎宽泛。