2008-11-22 68 views
0

如何通過我的label.text的點擊事件過濾我的datagridview?該值是從我的LINQ查詢:DataGridView篩選OnClick事件(C#WinForm)

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

讓我們只說上述查詢給我12(label.text = 12),現在當我點擊「12」,我希望我的DataGridView只顯示那些12行符合我上面的查詢。

回答

1

你需要它是動態的嗎?也許查詢本身存儲在您的標籤的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,以便查詢的結果可以綁定到。非常酷的東西。

0

現在我不使用LINQ,但邏輯建議,無論是表達

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

retured包含你所尋求的數據?那裏沒有財產來枚舉數據嗎?