Linq有多个包含

时间:2014-08-25 16:32:32

标签: c# sql-server linq

在我们的用户界面中,用户可以免费发送应用于多个字段的搜索文本。

            q = q.Where(p => p.Account.Contains(query)
                             || p.AccountName.Contains(query)
                             || p.AccountAKA.Contains(query)
                             || p.AccountRef.Contains(query));

这转化为SQL。是否有更优化的查询方式,因为这很慢。

大约有20,000行。数据库磁盘大小无关紧要,内存使用情况确实如此。

2 个答案:

答案 0 :(得分:1)

由于所有这些都是文本字段,因此每个值都转换为Account LIKE '%'+ query+ '%'。所有带有通配符的查询都会很慢,不幸的是,没有太多可以做的事情。

也许可以使用StartsWith()代替Contains()?这会转换为`LIKE query +'%',这通常要快得多?

答案 1 :(得分:1)

更好的解决方案是更改您的数据模型并使用包含所有帐户名称信息的Description列,以便您可以对单个列进行查询。对记录的更新会导致对此描述列的更新。