[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("编号\t姓名\t性别\t年龄\t\r\n");

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}\t{1}\t{2}\t{3}\t\r\n", 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 }

测试结果

[c#基础]DataTable的Select方法

总结

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

你可能感兴趣的:(Datatable)