0

如何通过单击事件上的 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 行。

4

2 回答 2

1

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

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,以便可以绑定查询结果。很酷的东西。

于 2008-11-22T09:43:50.873 回答
0

现在我不使用 LINQ,但逻辑会建议表达式返回的任何内容

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

包含您要查找的数据?那里没有枚举数据的属性吗?

于 2008-11-22T09:29:58.063 回答