日期:2014-05-17  浏览次数:20506 次

100分求算法遍历表格
因为某种情况 现在后台生成了一个datatale 然后 在现在想要遍历它的行列 ,假如某一个单元格包含一个特定的字符串,那么 这一行就留着,如果这一行所有的列都不敢这个字符串 那么这一行就要被删除,求算法
table

------解决方案--------------------
假定特定字符串为"芝麻":

dt.DefaultView.RowFilter = string.Join(" OR ", dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName + " like '*芝麻*'").ToArray());

取dt.DefaultView或dt.DefaultView.ToTable()即可。
------解决方案--------------------
你就遍历吧,涉及到删除,就从后往前遍历,两层循环,先循环row,然后对每个row循环col
------解决方案--------------------

            string keyword = "关键字";
            for (int i = dt.Rows.Count - 1; i >= 0; i--)
            {
                bool isExists = false;
                foreach (DataColumn col in dt.Columns)
                {
                    var obj = dt.Rows[i][col];
                    if (obj == null)
                        continue;
                    if (obj.ToString().Contains(keyword))
                    {
                        isExists = true;
                        break;
                    }
                }
                if (!isExists)
                    dt.Rows.RemoveAt(i);
            }


------解决方案--------------------
引用:
Quote: 引用:

你就遍历吧,涉及到删除,就从后往前遍历,两层循环,先循环row,然后对每个row循环col

循环遍历不行的,用for的话 最后删除的只有奇数行,用foreach 删除的话 报错提示指针发生改变什么什么的