问题:
使用DataSetHelper,对DataSet进行Group By时,可以对手动加入的数据进行Group By,而不能对从数据库或xml文件中加入的数据进行Group By。string msg = null;
//读取xml数据源
DataSet dsxml = new DataSet();
dsxml.ReadXml(HttpContext.Current.Server.MapPath(xmlfilename),XmlReadMode.ReadSchema);
//建立新数据表
DataSet ds = new DataSet();
DataTable dt = new DataTable("Orders");
dt.Columns.Add("EmployeeID", Type.GetType("System.String"));
dt.Rows.Add(new object[] {"中国"});
dt.Rows.Add(new object[] {"日本"});
dt.Rows.Add(new object[] {"中国"});
dt.Rows.Add(new object[] {"日本"});
dt.Rows.Add(new object[] {"中国"});
for(int i=0;i<dsxml.Tables[0].Rows.Count;i++)//此dt中的指定固定值如“法国”可被group by
{
dt.Rows.Add(new object[] {"法国"});
}
for(int i=0;i<dsxml.Tables[0].Rows.Count;i++)//这里KeyWordGroup值来自xml,不能被group by
{
dt.Rows.Add(new object[] {""+dsxml.Tables[0].Rows[i]["KeyWordGroup"]+""});
}
ds.Tables.Add(dt)
;
DataSetHelper dsHelper = new DataSetHelper(ref ds);
dt = dsHelper.SelectGroupByInto("OrderSummary",//表名
ds.Tables["Orders"],//数据源
"EmployeeID",//Select
"",//条件
"EmployeeID");//需要Group的字段
for(int i=0; i<dt.Rows.Count; i++)
{
msg += dt.Rows[i]["EmployeeID"].ToString()+"<br>\n";
}实际运行结果:
法国
区级
区级
区级
区级
日本
市县
市县
中国而我需要的结果是:
法国
区级
日本
市县
中国

解决方案 »

  1.   

    Group的作用是分组,而非消除重复记录.消除重复记录,应该是Distinct
      

  2.   

    那我想请问一下:
    1.为什么除了动态生成的记录之外,其它的为什么又能消除重复记录呢?
    2.使用MS的DataSetHelper类的SelectDistinct一样是这样的错误结果。
    为什么呢?
      

  3.   

    你可以使用ado.net的表达式来实现该功能,
    ADO.NET 中的表达式
    http://www.microsoft.com/china/MSDN/library/data/dataAccess/ADONETEXP.mspx