繁体   English   中英

Linq-to-SQL语句问题

[英]Linq-to-SQL statement issue

我基本上是想将搜索查询绑定到一个不错的gridview上,但这必须由用户输入查询来完成(有点像搜索功能)。 我可以返回单个值和行,但是如何在数据库的所有列中搜索输入的值并返回它呢?

到目前为止,我的代码是:

Void SearchFunction()
{
  TiamoDataContext context = new TiamoDataContext();

  var search from p in context.UserProfiles
      where p.DanceType == UserSearchString
      select p;

  UserSearchGrid.DataSource = search;
  UserSearchGrid.DataBind();
}

我尝试了p.equals,但可以肯定的是这不是解决问题的办法。

看起来您的查询语法有点差。 它应该看起来像:

var search = from p in context.UserProfiles
             where p.DanceType == UserSearchString
             select p;

由于您要查询多个列,因此必须用or所要查看的列的名称:

var search = from p in context.UserProfiles
             where p.DanceType == UserSearchString ||
                 p.Name == UserSearchString ||
                 p.SomeOtherStringColumn == UserSearchString
             select p;

或者,如果您想使用Lambda语法:

var search = context.UserProfiles.Where(p => p.DanceType == UserSearchString ||
                 p.Name == UserSearchString ||
                 p.SomeOtherStringColumn == UserSearchString);

请记住,使用这些方法之一都意味着p.DanceTypestring类型。

如果要它搜索表中的每一列,则必须告诉它搜索表中的每一列。

var search =
    from p in context.UserProfiles
    where 
        p.DanceType == UserSearchString ||
        p.Foo == UserSearchString ||
        p.Bar == UserSearchString
    select p;

这里的所有都是它的。 没有魔术运算符会自动执行此操作(不可能-有些列甚至可能不是字符串)。

请记住,这可能会非常慢,因为查询优化器将无法选择可以处理整个查询的单个索引。

顺便说一句,此“搜索”仅测试纯平等性。 您可能要分别使用StartsWithContains进行前缀或子字符串搜索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM