DataSetHelper——操作DataSet的工具类

微软知识库里面有个DataSetHelper ,可以对DataSet中的DataTable进行Distinct、Group by、Join和Create。 我进行了整理,并添加了一些小的特性,代码如下:
using System;
using System.Collections;
using System.Data;

namespace Common
{
    
/// <summary>
    
/// DataSet助手
    
/// </summary>

    public class DataSetHelper
    
{
        
private class FieldInfo
        
{
            
public string RelationName;
            
public string FieldName;
            
public string FieldAlias;
            
public string Aggregate;
        }


        
private DataSet ds;
        
private ArrayList m_FieldInfo;
        
private string m_FieldList;
        
private ArrayList GroupByFieldInfo;
        
private string GroupByFieldList;

        
public DataSet DataSet
        
{
            
get return ds; }
        }


        
Construction

        
Private Methods

        
SelectDistinct / Distinct

        
Select Table Into

        
Group By Table

        
Join Tables

        
Create Table
    }
posted @ 2005-01-05 17:05 风满袖 阅读(5953) 评论(15)  编辑 收藏 网摘 所属分类: C#

  回复  引用    
#1楼2005-07-17 16:09 | arsser[未注册用户]
if ( ds != null && ds.Tables.Contains( tableName ) )
{
ds.Tables.Add( dt );
}
改了原来的代码,明显有错误么。

  回复  引用  查看    
#2楼[楼主]2005-07-18 09:16 | James      
@arsser:
thx,的确是一个明显的错误。
我的原意是:

if ( ds != null && !ds.Tables.Contains( tableName ) )
{
ds.Tables.Add( dt );
}

public DataTable Distinct(string tableName, DataTable sourceTable, string[] fieldNames)
是我自己加的方法。

我已经修改了错误的地方。
再次感谢,我太粗心了。

  回复  引用  查看    
#3楼2006-02-23 10:42 |       
你应该不是实现Group by 功能吧,应该是Sort by 功能。
  回复  引用  查看    
#4楼2006-03-06 09:06 | format      
private DataTable CreateGroupByTable(string tableName, DataTable sourceTable, string fieldList)
这里是私有方法了,我参考微软的代码,这个应该是提供GroupBy功能的,应该是public吧。

  回复  引用  查看    
#5楼[楼主]2006-03-06 14:06 | 风满袖      
@format

CreateGroupByTable是私有的.
SelectGroupByInto方法是共有的.

  回复  引用  查看    
#6楼2006-04-04 04:10 | 梁广永      
能提供源码吗?
谢谢!
whycome@gmail.com

  回复  引用  查看    
#7楼[楼主]2006-04-11 17:53 | 风满袖      
@梁广永
源码我全部贴出来了

  回复  引用    
#8楼2006-04-17 20:53 | yezie[未注册用户]
郁闷,我都是 未将对象引用设置到对象的实例
怎么用?举个简单例子

  回复  引用    
#9楼2006-04-21 10:53 | 路过-疑惑[未注册用户]
public DataSetHelper(ref DataSet dataSet)
{
ds = dataSet;
}


请问为什么要传递ref参数?调用ds.Tables不出异常吗?

  回复  引用    
#10楼2006-09-05 15:52 | 周奔驰[匿名][未注册用户]
ref我觉得没必要 又不是值类型
  回复  引用    
#11楼2006-10-25 09:47 | ztchen[未注册用户]
不错,但明显coding的功力还欠火候,多进步吧
  回复  引用    
#12楼2006-12-25 09:46 | zfq308[未注册用户]
有VB的版本嗎?
  回复  引用    
#13楼2007-08-27 11:03 | scar[未注册用户]
一;
switch ( field.Aggregate.ToLower() )
{
case null:
case "":
case "last":


??
field.Aggregate 如果为null 则field.Aggregate.ToLower() 出错



二;

//return ( (decimal) a + (decimal) b );
改为:
return ( Convert.ToDecimal(a) + Convert.ToDecimal(b) );

不然在2003下出错



以上是个人测试结果.
谢谢共享.

  回复  引用  查看    
#14楼2008-11-28 15:55 | pcsky(进哥)      
一;
switch ( field.Aggregate.ToLower() )
{
case null:
case "":
case "last":


??
field.Aggregate 如果为null 则field.Aggregate.ToLower() 出错

经过测试,去掉.ToLower() 运行即可通过!

  回复  引用  查看    
#15楼2009-05-18 13:20 | Raymond--.NET      
SelectGroupByInto这个方式怎么调用的 好像出错了...



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 86838




相关文章:

相关链接: