【发布时间】:2012-10-20 09:04:19
【问题描述】:
谁能建议如何改进?
public IEnumerable<Person> FindPersons(string queryTerms)
{
if (queryTerms == null)
return new List<Person>();
var queryTermsList = queryTerms.Split(' ').ToList();
var first = queryTermsList.First();
queryTermsList.Remove(first);
var people = FindPerson(first);
foreach (var queryTerm in queryTermsList)
{
people = people.Intersect(FindPerson(queryTerm));
}
return people;
}
基本上,它的作用是在 queryTermList 中搜索包含每个 queryTerm 的人。
因为结果必须包含我使用相交的所有术语。
因为我使用的是 intersect,所以我必须对 foreach 循环外的第一个查询词进行初始搜索,以便循环内的 intersect 可以与之相交。否则你显然总是得到空结果。
这意味着我需要在进入 foreach 循环之前从列表中删除第一个查询词。
好的,这样就可以了。似乎必须有一种更优雅的方式来写这个。
有什么建议吗?
【问题讨论】:
标签: c#