原文地址为:
DataTable的一些特殊用法:Select
当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到:
转载请注明本文地址: DataTable的一些特殊用法:Select
当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到:
1
DataTable dt
=
new
DataTable();
//
假设dt是由"SELECT C1,C2,C3 FROM T1"查询出来的结果
2
for
(
int
i
=
0
; i
<
dt.Rows.Count; i
++
)
3
{
4
if (dt.Rows[i]["C1"].ToString() == "abc")//查询条件
5
{
6
//进行操作
7
}
8
}
但这种做法用一两次还好说,用多了就累了。那有没有更好的方法呢?记得LinQ是可以直接对DataTable进行查询操作的,那在.Net Framework 2.0里,有没有类似的方法呢?答案是肯定的,就是dt.Select(),上面的操作可以改成这样:

2

3



4

5



6

7

8

1
DataRow[] drArr
=
dt.Select(
"
C1='abc'
"
);
//
查询
还可以这样操作:

1
DataRow[] drArr
=
dt.Select(
"
C1 LIKE 'abc%'
"
);
//
模糊查询
2
DataRow[] drArr
=
dt.Select(
"
'abc' LIKE C1 + '%'
"
,
"
C2 DESC
"
);
//
另一种模糊查询的方法
3
DataRow[] drArr
=
dt.Select(
"
C1='abc'
"
,
"
C2 DESC
"
);
//
排序
问题又来了,如果要把DataRow赋值给新的DataTable,怎么赋值呢?你可能会想到:

2

3

1
DataTable dtNew
=
dt.Clone();
2
for
(
int
i
=
0
; i
<
drArr.Length; i
++
)
3
{
4
dtNew.Rows.Add(drArr[i]);
5
}
但这样程序就会出错,说该DataRow是属于其他DataTable的,那要怎么做呢?很简单,这样就可以解决了:

2

3



4

5

1
DataTable dtNew
=
dt.Clone();
2
for
(
int
i
=
0
; i
<
drArr.Length; i
++
)
3
{
4
dtNew.ImportRow(drArr[i]);
5
}
这样就完成了。

2

3



4

5

转载请注明本文地址: DataTable的一些特殊用法:Select