带有多个包含的Linq

本文关键字:Linq 包含 | 更新日期: 2023-09-27 18:19:18

在我们的UI中,用户可以自由文本搜索应用于多个字段。

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

转换成SQL。是否有更优的查询方式,因为这是缓慢的。

大约有20,000行。数据库磁盘大小无关紧要,重要的是内存使用率

带有多个包含的Linq

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

也许可以用StartsWith()代替Contains() ?这将转化为' LIKE查询+ '%',这通常要快得多?

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