首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ文本搜索

LINQ文本搜索
EN

Stack Overflow用户
提问于 2015-12-10 18:47:34
回答 5查看 4.6K关注 0票数 2

我想做一个linq,“当txtKeyword.Text为空时,查询将返回所有数据,否则它将返回包含txtKeyword.Text的数据。”

代码语言:javascript
复制
        var search = from a in Context.data
                     where txtKeyword.Text.Trim().Count() > 0 ? a.Name.Contains(txtKeyword.Text.Trim()) : true
                     select a;
代码语言:javascript
复制
Error:
DbExpressionBinding requires an input expression with a collection ResultType.
Parameter name: input

我怎样才能做到这一点?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-12-10 18:52:57

代码语言:javascript
复制
var search =     from a in Context.data
                 where string.IsNullOrWhitespace(txtKeyword.Text) 
                 || a.Name.Contains(txtKeyword.Text.Trim())
                 select a;
票数 2
EN

Stack Overflow用户

发布于 2015-12-10 18:52:45

对于查询生成器来说,查询表达式似乎太复杂了。

我会像这样把代码分开:

代码语言:javascript
复制
var search = Context.data;
string filter = txtKeyword.Text.Trim();
if (!string.IsNullOrEmpty(filter))
    search = search.Where(a => a.Name.Contains(filter));
票数 5
EN

Stack Overflow用户

发布于 2015-12-10 18:52:37

代码语言:javascript
复制
var search = from a in Context.data
             where txtKeyword.Text.Trim().Any() 
                   || a.Name.Contains(txtKeyword.Text)
             select a;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34209457

复制
相关文章

相似问题

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