问下datatable里的数据处理

jojoova 2013-04-30 01:46:35
datatable里有如下数据
项目A 项目B 项目C
AA BB 10
AA CC 20
AF FF 15
怎么判断该datatable里的项目A有无对应多个项目B,我能想到的就是一个个取出来循环判断,有没简单高效的方法?
...全文
133 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengixnyu 2013-05-06
  • 打赏
  • 举报
回复
引用 8 楼 sp1234 的回复:
[quote=引用 4 楼 dengixnyu 的回复:] datatable.select("项目A= AA and 项目B = bb")
啊,呸![/quote] 晕。看错题了。。。。。。不过我觉得楼主会采用5楼的答案
  • 打赏
  • 举报
回复
引用 4 楼 dengixnyu 的回复:
datatable.select("项目A= AA and 项目B = bb")
啊,呸!
  • 打赏
  • 举报
回复
当然你也可以写
var query = (from DataRow r in yourTable.Rows
                let a = (string)r["项目A"]
                where (from DataRow r2 in yourTable.Rows
                    where r2 != r && (string)r2["项目A"] == a
                    select r2).Any()
                select a).Distinct();
这显然不需要Group by运算啦。
  • 打赏
  • 举报
回复
引用 楼主 jojoova 的回复:
怎么判断该datatable里的项目A有无对应多个项目B,我能想到的就是一个个取出来循环判断,有没简单高效的方法?
var query = from DataRow r in yourTable.Rows
            group r by (string)r["项目A"] into g
            where g.Count() > 1
            select g.Key;
这当然也是循环,只不过非常清晰而已。
oreoconansisu 2013-04-30
  • 打赏
  • 举报
回复

DataTable dt1 = dt.DefaultView.ToTable(true, new string[] { "no" });
DataTable dt2 = dt.DefaultView.ToTable(true, new string[] { "no","name" });

if(dt1.Rows.Count != dt2.Rows.Count)
{
   //项目A中有对应多个B项目
}
else
{
   //反之
}
dengixnyu 2013-04-30
  • 打赏
  • 举报
回复
datatable.select("项目A= AA and 项目B = bb")
jojoova 2013-04-30
  • 打赏
  • 举报
回复
我还是用循环好了
jojoova 2013-04-30
  • 打赏
  • 举报
回复
但是这些数据是动态生成的,如果要用sql的话要写到表里了,有没不通过表的就能判断的方法
bdmh 2013-04-30
  • 打赏
  • 举报
回复
Select itemA,count(*) from tableA A inner join tableA B on A.itemA=B.itemA group by A.itemA

110,534

社区成员

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

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

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