DataTable的Select方法详解

在使用DataTable的时候,涉及到筛选的时候,常常用到一个参数叫Select,而Select提供了四个函数的重载:

  1. Select()——获取所有 System.Data.DataRow 对象的数组
  2. Select(string filterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 System.Data.DataRow 对象的数组
  3. Select(string filterExpression, string sort)——获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组
  4. Select(string filterExpression, string sort, DataViewRowState recordStates)——获取与排序顺序中的筛选器以及指定的状态相匹配的所有 System.Data.DataRow 对象的数组

测试代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("USER_DEPARTMENT", typeof(string));
            dt.Columns.Add("USER_NAME", typeof(string));
            dt.Columns.Add("USER_PWD", typeof(string));
            dt.Columns.Add("USER_AGE", typeof(int));
            dt.Rows.Add(new object[] {"销售部","白起","123456",25 });
            dt.Rows.Add(new object[] { "销售部", "赵牧", "123456", 22 });
            dt.Rows.Add(new object[] { "生产部", "李斯", "123456", 27 });
            dt.Rows.Add(new object[] { "生产部", "商鞅", "123456", 20 });

            //Select() 获取所有的数组 System.Data.DataRow 对象
            DataRow[] dataRows = dt.Select();
            foreach(DataRow row in dataRows)
            {
                Console.WriteLine(row["USER_DEPARTMENT"]+" "+row["USER_NAME"]+" "+ row["USER_AGE"]);
            }
            Console.WriteLine("-----------------------------");

            //Select(string filterExpression) 获取所有的数组 System.Data.DataRow 与筛选条件匹配的对象
            string strDept = "销售部";
            DataRow[] dataRows1 = dt.Select("USER_DEPARTMENT='"+ strDept+"'");
            foreach (DataRow row in dataRows1)
            {
                Console.WriteLine(row["USER_DEPARTMENT"] + " " + row["USER_NAME"] + " " + row["USER_AGE"]);
            }
            Console.WriteLine("-----------------------------");

            //Select(string filterExpression, string sort) 获取所有的数组 System.Data.DataRow 相匹配的筛选条件,在指定的排序顺序中的对象
            DataRow[] dataRows2 = dt.Select("USER_DEPARTMENT='" + strDept + "'", "USER_AGE asc");
            foreach (DataRow row in dataRows2)
            {
                Console.WriteLine(row["USER_DEPARTMENT"] + " " + row["USER_NAME"] + " " + row["USER_AGE"]);
            }

            Console.ReadLine();
        }
    }
}

运行结果:

运行结果:

销售部 白起 25
销售部 赵牧 22
生产部 李斯 27
生产部 商鞅 20
-----------------------------
销售部 白起 25
销售部 赵牧 22
-----------------------------
销售部 赵牧 22
销售部 白起 25

 

THE END