谁能建议如何改进?
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 循环之前从列表中删除第一个查询词。
好的,所以这行得通。似乎必须有一种更优雅的方式来写这个。
有什么建议么?