欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# DataTable 动态列,判定DataTable中的某些列是否有重复的值

程序员文章站 2022-06-10 18:07:12
...

需求:

1、有一个动态列的DataTable,有两列固定,分别是key列,value列,其余列不固定。

2、判定这个DataTable里除了value列的其余列是否有重复的值。


思路:1、因为列不固定,但是value列固定,那就现将DataTable中value列去掉再进行判定。

public static class StringExtensions
    {                            
        /// <summary>
        /// 根据datatable获得列名
        /// </summary>
        /// <param name="dt">表对象</param>
        /// <returns>返回结果的数据列数组</returns>
        public static string[] GetColumnsByDataTable(DataTable dt)
        {
            string[] strColumns = null;


            if (dt.Columns.Count > 0)
            {
                int columnNum = 0;
                columnNum = dt.Columns.Count;
                strColumns = new string[columnNum];
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    strColumns[i] = dt.Columns[i].ColumnName;
                }
            }
            return strColumns;
        } 
    }


    DataTable judgeTable = dt;
    judgeTable.Columns.Remove("value");
    if ((new DataView(dt)).Count != (new DataView(judgeTable)).ToTable(true, StringExtensions.GetColumnsByDataTable(judgeTable)).Rows.Count)
    {
        errorMessage = "其余列必须";
        goto t1;
    }