我有一个带有EntityDataSource的GridView。
我希望使用QueryExtender在运行时过滤行,方法是将它与多个字符串进行比较。
即,仅返回某个字段为IN的行('string1','string2',string3')
有人能指出我的答案吗?感谢。
编辑:我已经知道如何为一个字符串执行此操作,在运行时从控件读取。但我无法在谷歌上找到任何可以证明我想要实现的目标。
答案 0 :(得分:0)
拥有Enumerable<T>
,你可以定义一个List<string>
,其中包含你要查找的字符串列表,然后写出如下内容:
List<string> search = new List<string>();
search.Add("string 1");
search.Add("string 2");
var query = from ex in YourEntities
where search.Contains(ex.Field)
select ex;
query
将包含您要查找的内容。
<强>更新强>
我不熟悉QueryExtender控件,但this MSDN教程建议您执行以下操作:
在QueryExtender控件的开始和结束标记之间添加CustomExpressionFilter:
<asp:CustomExpression OnQuerying="FilterByStrings"></asp:CustomExpression>
然后在你的代码中定义这样的方法:
protected void FilterByStrings(object sender, CustomExpressionEventArgs e)
{
List<string> search = new List<string>();
search.Add("string 1");
search.Add("string 2");
e.Query = from ex in e.Query.Cast<YourEntity>()
where search.Contains(ex.Field)
select ex;
}