DataGridView过滤OnClick事件(C#WinForm)

时间:2008-11-22 08:11:11

标签: linq datagridview

如何通过click事件中my label.text的值过滤我的datagridview?该值来自我的linq查询:

dataSet.Tables[0].AsEnumerable().Where(c => c.Field<int>("ageColumn") > 3 &&
     c.Field<int>("ageColumn") < 5).Count();

我们只是说上面的查询给了我12(label.text = 12),现在当我点击“12”时,我希望我的datagridview只显示满足上述查询的那12行。

2 个答案:

答案 0 :(得分:1)

你需要它是动态的吗?也许将查询本身存储为标签的Tag属性中的lambda:

Predicate<DataColumn> clause = c => c.Field<int>("ageColumn") > 3 
    && c.Field<int>("ageColumn") < 5;
label1.Tag = clause;

...然后在点击标签时重新评估您的查询:

var clause = (sender as Label).Tag as Predicate<DataColumn>; 
myDataSource = dataSet.Tables[0].AsEnumerable().Where(clause);

我不知道这是否有用,但至少它会让你“将”where子句“附加”给各种标签。

我还建议您查看Bindable LINQ,以便查询结果可以绑定。很酷的东西。

答案 1 :(得分:0)

现在我不使用LINQ,但逻辑会建议表达式

返回的内容
dataSet.Tables[0].AsEnumerable().Where(c => c.Field<int>("ageColumn") > 3 &&
 c.Field<int>("ageColumn") < 5)

包含您寻找的数据?那里没有可以枚举数据的属性吗?