2012-03-14 71 views
0

我的數據表DT具有列如下DataTable的聯盟使用LINQ

名稱,價值,關鍵,IsMarkets,IsBudgets,IsPrograms

我有3個複選框chkbxBudgetsSearch,chkbxMarketsSearch,chkbxProgramsSearch

我想在以下條件下對dt進行過濾

if chkbxMarketsSearch.IsChecked == true 應顯示所有帶有IsMarkets = True的行

如果chkbxBudgetsSearch.IsChecked ==真 與IsBudgets所有行=真應顯示

同樣的程序

,如果點擊兩個複選框,然後用IsMarkets
所有行= True和IsBudgets =假/ IsMarkets =假和IsBudgets =真 /IsMarkets = True和IsBudgets =真應顯示

注:它不需要是唯一IsMarkets = True和IsBudgets =真

它接近工會運作 任何人都可以爲此linq?

回答

1

編輯:好的,現在這個問題已經改變:

var result = Enumerable.Empty<DataRow>(); 
var linqTable = table.AsEnumerable(); 
if (chkbxMarketsSearch.IsChecked) 
{ 
    results = results.Union(linqTable.Where(row => row.Field<bool>("IsMarkets")); 
} 
if (chkbxBudgetsSearch.IsChecked) 
{ 
    results = results.Union(linqTable.Where(row => row.Field<bool>("IsBudgets")); 
} 
if (chkbxProgramsSearch.IsChecked) 
{ 
    results = results.Union(linqTable.Where(row => row.Field<bool>("IsPrograms")); 
} 
// Probably best to call `ToList()` here before doing much more work... 

注意,如果沒有複選框被選中,你不會得到任何結果。

+0

不,這將檢索結果,如果任何一個條件爲真。那不是我想要的。例如,如果IsMarkets是真的,而IsBudgets是假的,那麼只有與這些IsMarkets是真實的記錄應該被撤回 – 2012-03-14 06:40:49

+1

@KuntadyNithesh:我不明白。你是說你有查詢*輸入*稱爲IsMarkets和IsBudgets以及表中的列?我的回答對你提問的問題是正確的,但是這聽起來像你沒有問你實際需要什麼。你應該澄清你的問題。見http://tinyurl.com/so-hints。一些示例數據將有助於......以及非常清楚查詢的輸入超出了數據表本身的範圍。 – 2012-03-14 07:01:42

+0

約翰你能否看到我更新的問題 – 2012-03-14 10:00:48