求一个 C# 操作 DataTable的简单算法

tnt278301967 2010-05-18 05:15:58
有个DataTable表 数据为:

姓名 性别 选修 学号
AAA 男 数学 00001
BBB 男 语文 00002
CCC 女 数学 00003
DDD 女 数学 00004
EEE 女 英语 00005
FFF 男 数学 00006
GGG 女 语文 00007

然后希望操作这个 DataTable 最后得出的结果是按选修的分组,就那3个DataTable放置吧 那么
DataTable1 数据为:
AAA 男 数学 00001
CCC 女 数学 00003
DDD 女 数学 00004
FFF 男 数学 00006


DataTable2 数据为:
BBB 男 语文 00002
GGG 女 语文 00007

DataTable3 数据为:
EEE 女 英语 00005

应该不会太难的算法 无奈本人太笨 循环到自己头晕了 觉得关键是选修种类有多少是不知道的 好麻烦~ 求各位大大帮帮忙~~~
...全文
121 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
uc_xkj1 2010-05-19
  • 打赏
  • 举报
回复
DataRow [] rows1=DataTable.Select("选修="数学"");
DataRow [] rows2=DataTable.Select("选修="语文"");
你可以考虑用这种方式
535cheng110 2010-05-19
  • 打赏
  • 举报
回复
我用过下面的方法,
你调用3次就可以了

public bool u_ds_searchSQL_FromField_ret_Tbl(DataTable dt, string filedX, string searchStr, out DataTable resultTbl)
{
bool result = false;
resultTbl = dt.Clone();
//SQLで、フィルドを検索
string strFormat = filedX + @"= '{0}'";
string sqlStr = String.Format(strFormat, searchStr);
System.Data.DataRow[] DRReply = dt.Select(sqlStr);

for (int i = 0; i < DRReply.Length; i++)
{
DataRow myDatarow = resultTbl.NewRow();
myDatarow.ItemArray = DRReply[i].ItemArray;
resultTbl.Rows.Add(myDatarow);
myDatarow = null;
}

result = (DRReply.Length == 0) ? false : true;

return result;
}
tnt278301967 2010-05-19
  • 打赏
  • 举报
回复
~因为数据库很大 所以 不能用sql语句 一点一点查询,就是现在手里只有一个DataTable类型的数据集,然后需要做这么一个分组操作~听说操作DataTable好像有类似sql语句的筛选数据方式 所以来求~~~~
taikonhmao67 2010-05-18
  • 打赏
  • 举报
回复
datatable.select(选修=数学)

好像是这样 忘记了 你试试吧
shichao1221 2010-05-18
  • 打赏
  • 举报
回复
兄弟,数据库里直接加条件查询出来不就行了,select * from tableName where 选修 = '语文'
一次一个,思路清晰
sxiaohui8709253 2010-05-18
  • 打赏
  • 举报
回复
把你要分组的所有选修种类先查出来放在一个种类数组里 把所有数据查出来放在一个总表里
在建一个dataset
然后循环种类数组的 每一次循环新建一个datatable
根据种类数组[i]的值在刚才那个总表里筛选 然后赋值给每次循环开始新建的datatable
把datatable Add到dataset
gxingmin 2010-05-18
  • 打赏
  • 举报
回复
select 选修 from table group 选修
得到选修的分类个数

然后再
select * from table where 选修='语文'
select * from table where 选修='数学'
select * from table where 选修='英语'
...
捷哥1999 2010-05-18
  • 打赏
  • 举报
回复
group by 选修!
tnt278301967 2010-05-18
  • 打赏
  • 举报
回复
返回值 也不一定要返回N个DT ~ 函数为void类型也行 只要把数据分好组 随便赋值给3个DT 全局变量 甚至随便几个字符串也行
deknight 2010-05-18
  • 打赏
  • 举报
回复
那就先distinct(选修)
gxingmin 2010-05-18
  • 打赏
  • 举报
回复
4 2 1分成三个Table?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧