有人可以建议如何改进吗?
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的人。
因为结果必须包含我使用过的所有术语。
因为我使用了交叉,所以我必须在foreach循环之外进行初始搜索第一个查询项,这样循环中的相交就会有一些东西要交叉。否则你显然总是得到空的结果。
这意味着我需要在进入foreach循环之前从列表中删除第一个查询词。
好的,这样可行。似乎必须有更优雅的方式来写这个。
有什么建议吗?
答案 0 :(得分:0)
您可以从整个集合开始,并将所有术语与之相交:
var people = AllPeople;
foreach (var queryTerm in queryTermsList)
{
people = people.Intersect(FindPerson(queryTerm));
}