我使用下面的代碼允許用戶DataTable通過搜索可能位于任何列或任何行中的特定字符串來過濾 a。代碼需要刪除值不存在的行,因為DataTable在操作后導出。此代碼的問題有兩個:1) 對于較大的表,它非常慢,以及 2) 它只能找到一個單元格的完整內容(即,如果列“Name”有一行值為“Andrew “用戶應該能夠搜索“drew”或“and”并獲得該結果;現在,如果他們搜索“Andrew”,它將返回該行)。if(!String.IsNullOrEmpty(combo1Text) || !String.IsNullOrEmpty(combo2Text) && !String.IsNullOrEmpty(search1Text) && !search1Text.Contains("Type your search for" + comboText + "here")) { for (int i = tab1table.Rows.Count - 1; i >= 0; i--) { DataRow dr = tab1table.Rows[i]; if (!dr.ItemArray.Contains(search1Text)) { dr.Delete(); tab1table.AcceptChanges(); } percentprogress++; worker.ReportProgress(percentprogress); } }進行我想要的過濾的最佳方法是什么(并且如此有效地進行過濾,以便它不僅僅是遍歷所有內容)?
1 回答

慕村9548890
TA貢獻1884條經驗 獲得超4個贊
要搜索單元格內容是否包含搜索到的文本,請嘗試以下代碼:
for (int i = tab1table.Rows.Count - 1; i >= 0; i--)
{
DataRow dr = tab1table.Rows[i];
if (!dr.ItemArray.Any(x=>(x as string).Contains(search1Text)))
{
dr.Delete();
}
percentprogress++;
worker.ReportProgress(percentprogress);
}
tab1table.AcceptChanges();
如果您有任何不是字符串類型的列,則應替換(x as string)為x.ToString()
- 1 回答
- 0 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消