[英]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.DanceType
是string
类型。
如果要它搜索表中的每一列,则必须告诉它搜索表中的每一列。
var search =
from p in context.UserProfiles
where
p.DanceType == UserSearchString ||
p.Foo == UserSearchString ||
p.Bar == UserSearchString
select p;
这里的所有都是它的。 没有魔术运算符会自动执行此操作(不可能-有些列甚至可能不是字符串)。
请记住,这可能会非常慢,因为查询优化器将无法选择可以处理整个查询的单个索引。
顺便说一句,此“搜索”仅测试纯平等性。 您可能要分别使用StartsWith
或Contains
进行前缀或子字符串搜索。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.