亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的過濾器不起作用?d.DefaultView.RowFilter = cls;

為什么我的過濾器不起作用?d.DefaultView.RowFilter = cls;

C#
哈士奇WWW 2023-04-29 15:52:37
我只想對我的數據表應用行過濾器,但它不起作用,沒有錯誤,只是取回相同的數據表。我嘗試從數據表創建一個數據視圖以便應用,但這也不會返回過濾后的列表。我不知道為什么下面的代碼不起作用..DataTable d = processFileData(concatFile);string cls = String.Format("Column6 NOT IN ({0})", String.Join(",", returnClass()));d.DefaultView.RowFilter = cls;上面的 cls 變量是我嘗試使用的 int 值列表,如下所示:Column6 NOT IN (75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,281,303,405,406,493,599,601,606,610,626,630,639,640,647,648,651,662,664,671,672,680,689,697,701,703,706,709,712,717,718,724,735,740,741,743,744,767,768,769,770,775,780,791,799,800,801,802,803,805,806,807,808,810,811,812,815,816,817,818,820,836,837,873,874,875,879,881,895,896,897,902,903,904)我希望有一組新的記錄,其中只有那些在我的過濾器中沒有條件的記錄。原始 DataTable = 34,945 條記錄,如果我在文件中手動應用 excel 中的篩選器,預期結果應該是 DataTable = 29,240 條記錄。這是我嘗試使用過濾器完成的示例:原始數據表:列 1、列 2、列 4、列 5、列 6你好,今天,食物,樂趣,75你好,今天,食物,樂趣,75你好,今天,食物,樂趣,79你好,今天,食物,樂趣,79你好,今天,食物,樂趣,79你好,今天,食物,樂趣,100你好,今天,食物,樂趣,101你好,今天,食物,樂趣,700你好,今天,食物,樂趣,750你好,今天,食物,樂趣,749你好,今天,食物,樂趣,755你好,今天,食物,樂趣,799你好,今天,食物,樂趣,799你好,今天,食物,樂趣,804根據 Column6 值過濾后的預期數據表:列 1、列 2、列 4、列 5、列 6你好,今天,食物,樂趣,100你好,今天,食物,樂趣,101你好,今天,食物,樂趣,700你好,今天,食物,樂趣,750你好,今天,食物,樂趣,749你好,今天,食物,樂趣,755你好,今天,食物,樂趣,804
查看完整描述

2 回答

?
HUWWW

TA貢獻1874條經驗 獲得超12個贊

您可以為此使用 linq 而不是 DataView


List<int> filter = new List<int>()

            {

               75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,281,303,405,406,493,599,601,606,610,626,630,639,640,647,648,651,662,664,671,672,680,689,697,701,703,706,709,712,717,718,724,735,740,741,743,744,767,768,769,770,775,780,791,799,800,801,802,803,805,806,807,808,810,811,812,815,816,817,818,820,836,837,873,874,875,879,881,895,896,897,902,903,904

            }; 



DataTable output = dt.AsEnumerable().Where((row,index) => !filter.Contains(index)).CopyToDataTable();

希望這能回答你的問題


查看完整回答
反對 回復 2023-04-29
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

 // list of values to be filtered

            List<int> filter = new List<int>()

            {

               75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,281,303,405,406,493,599,601,606,610,626,630,639,640,647,648,651,662,664,671,672,680,689,697,701,703,706,709,712,717,718,724,735,740,741,743,744,767,768,769,770,775,780,791,799,800,801,802,803,805,806,807,808,810,811,812,815,816,817,818,820,836,837,873,874,875,879,881,895,896,897,902,903,904

            }; 


// LINQ statement to do filtering

  IEnumerable<DataRow> unmatchingRows = from DataRow row in dt.Rows

                                      where !filter.Contains((int)row[0])

                                      select row;

  // add to a new datatable

  DataTable output = dt.Clone();

  foreach (DataRow item in unmatchingRows)

  {

      output.ImportRow(item);

  }


查看完整回答
反對 回復 2023-04-29
  • 2 回答
  • 0 關注
  • 198 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號