zoukankan      html  css  js  c++  java
  • [c#基础]DataTable的Select方法

    引言

    可以说DataTable存放数据的一个离线数据库,将数据一下加载到内存,而DataReader是在线查询,而且只进形式的查询,如果后退一步,就不可能了,DataTable操作非常方便,但也有缺点,数据量非常大的时候,一下加载到内存,可想而知会有多么的卡了。这里只是说明DataTable的select()方法,具体项目根据需求,可以自己选择。

    Select

    既然DataTable是一下从数据库中拿数据,肯定提供了更方便的筛选方法,然后就找了一下,觉得Select能满足日常的筛选工作,做了一个小demo,测试了一下。

     1 //
     2         // 摘要: 
     3         //     获取所有 System.Data.DataRow 对象的数组。
     4         //
     5         // 返回结果: 
     6         //     System.Data.DataRow 对象的数组。
     7         public DataRow[] Select();
     8         //
     9         // 摘要: 
    10         //     获取按与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。
    11         //
    12         // 参数: 
    13         //   filterExpression:
    14         //     要用来筛选行的条件。
    15         //
    16         // 返回结果: 
    17         //     System.Data.DataRow 对象的数组。
    18         public DataRow[] Select(string filterExpression);
    19         //
    20         // 摘要: 
    21         //     获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。
    22         //
    23         // 参数: 
    24         //   filterExpression:
    25         //     要用来筛选行的条件。
    26         //
    27         //   sort:
    28         //     一个字符串,它指定列和排序方向。
    29         //
    30         // 返回结果: 
    31         //     与筛选表达式相匹配的 System.Data.DataRow 对象的数组。
    32         public DataRow[] Select(string filterExpression, string sort);
    33         //
    34         // 摘要: 
    35         //     获取与排序顺序中的筛选器以及指定的状态相匹配的所有 System.Data.DataRow 对象的数组。
    36         //
    37         // 参数: 
    38         //   filterExpression:
    39         //     要用来筛选行的条件。
    40         //
    41         //   sort:
    42         //     一个字符串,它指定列和排序方向。
    43         //
    44         //   recordStates:
    45         //     System.Data.DataViewRowState 值之一。
    46         //
    47         // 返回结果: 
    48         //     System.Data.DataRow 对象的数组。
    49         public DataRow[] Select(string filterExpression, string sort, DataViewRowState recordStates);
    Select
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace Wolfy.DatatableSelect
    12 {
    13     public partial class MainForm : Form
    14     {
    15         public MainForm()
    16         {
    17             InitializeComponent();
    18         }
    19         DataTable dt = null;
    20         DataTable d = null;
    21         private void btnSearch_Click(object sender, EventArgs e)
    22         {
    23             string where = string.Empty;
    24             if (ckMan.Checked)
    25             {
    26                 where += "性别='男'";
    27             }
    28             else
    29             {
    30                 where = string.Empty;
    31             }
    32             if (ckCotainsW.Checked)
    33             {
    34                 where += ckMan.Checked ? " and 姓名 like '%w%'" : "姓名 like '%w%'";
    35             }
    36             
    37             DataRow[] rows = dt.Select(where);
    38             richTextResult.AppendText("编号	姓名	性别	年龄	
    ");
    39             for (int i = 0; i < rows.Length; i++)
    40             {
    41                 ShowSearchResult(rows[i]);
    42             }
    43 
    44 
    45 
    46 
    47         }
    48         private void ShowSearchResult(DataRow row)
    49         {
    50             richTextResult.AppendText(string.Format("{0}	{1}	{2}	{3}	
    ", row[0], row[1], row[2], row[3]));
    51         }
    52         private void MainForm_Load(object sender, EventArgs e)
    53         {
    54             dt = new DataTable();
    55             DataColumn cell1 = new DataColumn("编号");
    56             cell1.DataType = typeof(System.Int32);
    57             DataColumn cell2 = new DataColumn("姓名");
    58             cell2.DataType = typeof(System.String);
    59             DataColumn cell3 = new DataColumn("性别");
    60             cell3.DataType = typeof(System.String);
    61             DataColumn cell4 = new DataColumn("年龄");
    62             cell4.DataType = typeof(System.Int32);
    63             dt.Columns.AddRange(new DataColumn[] { cell1, cell2, cell3, cell4 });
    64 
    65             Random ran = new Random();
    66             string[] gender = { "", "", "保密" };
    67             string[] names = { "韩梅梅", "wolfy", "小米", "w3w" };
    68             for (int i = 0; i < 20; i++)
    69             {
    70                 int index = ran.Next(0, 3);
    71                 DataRow row = dt.NewRow();
    72                 row[0] = i;
    73                 row[1] = names[ran.Next(0, 4)] + i.ToString();
    74 
    75                 row[2] = gender[index];
    76                 row[3] = ran.Next(10, 50);
    77                 dt.Rows.Add(row);
    78             }
    79             dgView.DataSource = dt;
    80         }
    81 
    82 
    83     }
    84 }

    测试结果

    总结

    用select方法进行筛选还是非常方便的,以前的本方法就是遍历,然后将符合条件的数据取出,很麻烦。

  • 相关阅读:
    Legacy(点对线段有路走,线段向点有路走,线段树走dij)
    G. Death DBMS(查询每个主串和n个模板串匹配后val最大值,支持单点更新)
    2020 CCPC Wannafly Winter Camp Day5 J Xor on Figures(矩阵转01串,统计01串异或种类)
    zoj3988(自己集合和自己集合匹配)
    2020 CCPC Wannafly Winter Camp Day7 A(求任何子序列中相邻范围内数的个数的总和)
    hdu6241(给定树中向上向下限制求最小可能个数)
    hdu6230(求限制条件的回文个数,利用manacher+BIT求解)
    NOIP 2020 游记
    分散层叠算法学习笔记
    代理模式
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/3560389.html
Copyright © 2011-2022 走看看