获取DataTable字段唯一值(DISTINCT)
生活随笔
收集整理的這篇文章主要介紹了
获取DataTable字段唯一值(DISTINCT)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?? ? ? ?///?<summary>
????????///?將所選字段的唯一值復(fù)制到一個新的?DataTable。?
????????///?<para>如果字段包含?NULL?值,目標(biāo)表中的記錄還包含?NULL?值</para>
????????///?</summary>
????????///?<param?name="sourceTable">源數(shù)據(jù)表</param>
????????///?<param?name="filterExpression">檢索條件</param>
????????///?<param?name="fieldName">唯一值的字段名</param>
????????///?<returns></returns>?
????????public?DataTable?SelectDistinct(DataTable?sourceTable,?string?filterExpression,?string?fieldName)
????????{
????????????DataTable?dt?=?new?DataTable(sourceTable.TableName);
????????????dt.Columns.Add(fieldName,?sourceTable.Columns[fieldName].DataType);
????????????object?lastValue?=?null;
????????????foreach?(DataRow?dr?in?sourceTable.Select(filterExpression,?fieldName))
????????????{
????????????????if?(lastValue?==?null?||?!(ColumnEqual(lastValue,?dr[fieldName])))
????????????????{
????????????????????lastValue?=?dr[fieldName];
????????????????????dt.Rows.Add(new?object[]?{?lastValue?});
????????????????}
????????????}
????????????return?dt;
????????}
????????private?bool?ColumnEqual(object?A,?object?B)
????????{
????????????if?(A?==?DBNull.Value?&&?B?==?DBNull.Value)
????????????????return?true;
????????????if?(A?==?DBNull.Value?||?B?==?DBNull.Value)
????????????????return?false;
????????????return?(A.Equals(B));
????????}?
????????///?將所選字段的唯一值復(fù)制到一個新的?DataTable。?
????????///?<para>如果字段包含?NULL?值,目標(biāo)表中的記錄還包含?NULL?值</para>
????????///?</summary>
????????///?<param?name="sourceTable">源數(shù)據(jù)表</param>
????????///?<param?name="filterExpression">檢索條件</param>
????????///?<param?name="fieldName">唯一值的字段名</param>
????????///?<returns></returns>?
????????public?DataTable?SelectDistinct(DataTable?sourceTable,?string?filterExpression,?string?fieldName)
????????{
????????????DataTable?dt?=?new?DataTable(sourceTable.TableName);
????????????dt.Columns.Add(fieldName,?sourceTable.Columns[fieldName].DataType);
????????????object?lastValue?=?null;
????????????foreach?(DataRow?dr?in?sourceTable.Select(filterExpression,?fieldName))
????????????{
????????????????if?(lastValue?==?null?||?!(ColumnEqual(lastValue,?dr[fieldName])))
????????????????{
????????????????????lastValue?=?dr[fieldName];
????????????????????dt.Rows.Add(new?object[]?{?lastValue?});
????????????????}
????????????}
????????????return?dt;
????????}
????????private?bool?ColumnEqual(object?A,?object?B)
????????{
????????????if?(A?==?DBNull.Value?&&?B?==?DBNull.Value)
????????????????return?true;
????????????if?(A?==?DBNull.Value?||?B?==?DBNull.Value)
????????????????return?false;
????????????return?(A.Equals(B));
????????}?
?
轉(zhuǎn)載于:https://www.cnblogs.com/EasyData/archive/2010/01/20/1652173.html
總結(jié)
以上是生活随笔為你收集整理的获取DataTable字段唯一值(DISTINCT)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Symbian开发平台的搭建之VC++6
- 下一篇: do...while(0)的妙用