DataTable.Select 语法 帮写一个SQL语句

时间:2022-05-23 04:48:24
  source   time
  北京日报  2012-12-20
  北京日报  2012-12-20
  北京日报  2012-12-22
  广州日报  2012-12-20
  广州日报  2012-12-21
  广州日报  2012-12-22
  广州日报  2012-12-22

这个是我从一个你们都没听说过的数据库里面取出来的DataTable,大概有10W条,想做个排重。10W条循环一遍肯定是很慢的,对DataTable.Select语法又不熟,求解。
我自己折腾了一下没搞出来,group by time,source会丢失时间相同source不同的。
我想得到的结果是
  source   time
  北京日报  2012-12-20
  北京日报  2012-12-22
  广州日报  2012-12-20
  广州日报  2012-12-21
  广州日报  2012-12-22

7 个解决方案

#1


这个select就写点简单的语句,别想着用它当sql用

#2


引用 1 楼 bdmh 的回复:
这个select就写点简单的语句,别想着用它当sql用

那有没有什么办法让这10W条数据做排重稍微快点?

#3


distinct

#4


用Linq   来做

#5


没听过的数据库???表示想知道什么数据库!
支持LS,用Linq

#6


select distinct(source),time from 表xx order by source,time

#7


我补充5L的详细过程
 var result = from r in dt.AsEnumerable()
                           group r by new
                           {
                               source = r.Field<string>("source"),
                               time = r.Field<DateTime>("time")
                           } into g
                           select new
                           {
                               source = g.Key.source,
                               time = g.Key.time
                           };
            DataTable newDt = dt.Clone();
            foreach (var item in result)
            {
                DataRow dr = newDt.NewRow();
                dr["source"] = item.source;
                dr["time"] = item.time;
                newDt.Rows.Add(dr);
            }
newDt就是你想要的结果

#1


这个select就写点简单的语句,别想着用它当sql用

#2


引用 1 楼 bdmh 的回复:
这个select就写点简单的语句,别想着用它当sql用

那有没有什么办法让这10W条数据做排重稍微快点?

#3


distinct

#4


用Linq   来做

#5


没听过的数据库???表示想知道什么数据库!
支持LS,用Linq

#6


select distinct(source),time from 表xx order by source,time

#7


我补充5L的详细过程
 var result = from r in dt.AsEnumerable()
                           group r by new
                           {
                               source = r.Field<string>("source"),
                               time = r.Field<DateTime>("time")
                           } into g
                           select new
                           {
                               source = g.Key.source,
                               time = g.Key.time
                           };
            DataTable newDt = dt.Clone();
            foreach (var item in result)
            {
                DataRow dr = newDt.NewRow();
                dr["source"] = item.source;
                dr["time"] = item.time;
                newDt.Rows.Add(dr);
            }
newDt就是你想要的结果