DataTable过滤处理

111 篇文章 0 订阅

构建一个datatable:

 DataTable dt = new DataTable();
            dt.Columns.Add("customid");
            for (int i = 0; i < 10; i++)
            {
                DataRow dr = dt.NewRow();
                dr["customid"] = i.ToString();
                dt.Rows.Add(dr);
            }
添加新列Add方法就可以了,假如要插到某一列后面呢,可以用SetOrdinal(int ordinal)方法:

/// <summary>
        /// 从目标字符串中查找
        /// </summary>
        /// <param name="findstr">要查找的字符串</param>
        /// <returns></returns>
        private List<string> GetObjItemsFromList(string findstr)
        {
            string[] arry = { "01 张三 男", "02 李四 男", "03 王五 女" };
            return arry.ToList<string>().FindAll(delegate(string str) { return str.Contains(findstr); });
        }

DataTable dt_excel = ds.Tables[0];
                dt_excel.Columns.Add("new_sex").SetOrdinal(3);//添加新列new_sex并插入到第四列(序号)的位置
                for (int i = 0; i < dt_excel.Rows.Count; i++)
                    dt_excel.Rows[i]["new_sex"] = dt_excel.Rows[i]["e_sex"].ToString() == "0" ? "男" : "女";

                dt_excel.Columns.Remove("e_sex");//移除掉


方法一:

        using (ds = ....)
        {
            if (ds != null && ds.Tables[0].Rows.Count > 0)
            {
                System.Text.StringBuilder temp_dept_id = new System.Text.StringBuilder();
                ds.Tables[0].DefaultView.ToTable(true, "HR_DEPT_ID").AsEnumerable().ToList().ForEach(x => { temp_dept_id.Append(FormateAddString(x["HR_DEPT_ID"].ToString())); });
                if (string.IsNullOrEmpty(temp_dept_id.ToString())) return;
                strWhere += " AND HR_DEPT_ID in(" + temp_dept_id.ToString().TrimEnd(',') + ")";
            }
        }

/// <summary>
    /// 格式化字符串
    /// </summary>
    private string FormateAddString(string paramstr)
    {
        return !string.IsNullOrEmpty(paramstr) ? (paramstr + ",") : "";
    }

方法二:

通过实现IEqualityComparer接口成员方法

/// <summary>
    /// 去掉DataTable重复项
    /// </summary>
    /// <remarks>实现IEqualityComparer接口成员方法</remarks>
    public class DataTableRowCompare : IEqualityComparer<DataRow>
    {
        public DataTableRowCompare()
        {
        }
        public DataTableRowCompare(string filedname)
        {
            _fieldname = filedname;
        }
        private string _fieldname = "id";
        public string fieldName
        {
            get { return _fieldname; }
            set { _fieldname = value; }
        }
        public bool Equals(DataRow x, DataRow y)
        {
            return (x.Field<string>(fieldName) == y.Field<string>(fieldName));
        }
        public int GetHashCode(DataRow obj)
        {
            return obj.ToString().GetHashCode();
        }
    }
using (DataSet postDS = .....)
        {
            DataTable _resultDt = postDS.Tables[0].AsEnumerable().Distinct(new DataTableRowCompare("POST_NAME")).CopyToDataTable();
            CCBindDropDownList(this.ddlPostionName, _resultDt, "POST_NAME", "HR_DEPT_PATH", new ListItem());
        }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值