【发布时间】:2017-05-26 12:37:08
【问题描述】:
我已经使用以下代码在对象列表中搜索特定值:
List<customer> matchingContacts = cAllServer
.Where(o => o.customerNum.Contains(searchTerm) ||
o.personInv.lastname.Contains(searchTerm) ||
o.personDel.lastname.Contains(searchTerm))
.ToList();
是否有更快或更简洁的方法来实现此搜索?
【问题讨论】:
-
为什么?这比您预期的要慢吗?
-
这是我知道的唯一方法,它将搜索对象中指定的所有字符串字段并返回这些列表项,这更多的是关于是否有任何潜在的优化或更清洁的问题暗示的方式。
-
@DanHall 没有,没有
-
是的。这本质上是全文搜索。如果
cAllServer是数据库服务器,则可以使用服务器的 FTS 功能。例如,SQL Server 提供 FTS。如果cAllServer是一个内存列表,您必须创建一个单独的结构来加速 FTS 搜索。就像 BTree 一样,有一些容器可以加速此类搜索,尽管它们并非微不足道 -
@John 我想你的意思是
for,而不是foreach,虽然这只是一个微优化。