首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Contains和not contains的Linq查询

使用Contains和not contains的Linq查询
EN

Stack Overflow用户
提问于 2013-12-13 21:02:20
回答 1查看 48.2K关注 0票数 8

我试图从数据库中获取记录,从这个意义上说,它应该获取名称包含"searchKey“的记录,并且名称不在excludeTerms数组中,并用逗号分隔。我如何在Linq中做到这一点?

代码语言:javascript
运行
复制
 Rows = (from u in DB.Clients
         where u.Name.Contains(searchTerm) && !u.Name.Contains(string.Join(",", excludeTerms.Select(s => "'" + s + "'").ToArray()))
         select new ClientModel
         {
            Name = u.FullName,
            Id = u.Id,
         }).Take(5).ToList();

其中excludeTerms包含元素列表,例如

代码语言:javascript
运行
复制
1)Sandy
2)Mandy
3)Larry etc

代码语言:javascript
运行
复制
List<string> excludeTerms = new List<string>();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-13 21:04:39

不幸的是,您只能将本地序列与Contains运算符(转换为SQL IN运算符)一起使用。因此,您可以将整个过滤移到内存中

代码语言:javascript
运行
复制
Rows = (from u in DB.Clients.AsEnumerable()
        where u.Name.Contains(searchTerm) &&
             !excludeTerms.Any(s => u.Name.Contains(s))
         select new ClientModel {
              Name = u.FullName,
              Id = u.Id,
         }).Take(5).ToList();

或者只是过滤掉排除的术语:

代码语言:javascript
运行
复制
Rows = (from u in DB.Clients
        where u.Name.Contains(searchTerm)                 
        select new ClientModel {
              Name = u.FullName,
              Id = u.Id,
        }).AsEnumerable()
          .Where(m => !excludeTerms.Any(s => m.Name.Contains(s)))
          .Take(5).ToList();
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20567223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档