如何使用linq过滤数据表 [英] How to filter datatable using linq

查看:87
本文介绍了如何使用linq过滤数据表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据表。现在我想使用linq过滤那个数据表.datatable有很多列但是喜欢

 station max_temp min_temp date 
XYZ 14.5 3.5 26-20-2016
XYX 13.5 3.5 25-5-2016
ABC 14.5 3.5 26-5-2016
ABC 12.5 5.5 23.5.2016




现在我想在这样的数据表中选择



 XYZ 14.5 3.5 26 -5-2016 
ABC 14.5 3.6 26.5.2016





我的尝试:



 DataView dv =  new  DataView(dtExtraRowOfXML); 
dv.Sort = DateTime DESC;

var x =(来自 r in dtExtraRowOfXML.AsEnumerable()选择 r [ ])个不同的();


DataTable dtfinalXML = dt1.AsEnumerable()。Union(dtExtraRowOfXML.AsEnumerable(),DataRowComparer.Default).CopyToDataTable();

解决方案

这样的事情应该有效:

 DataTable dtfinalXML = dt1.AsEnumerable()
.GroupBy(r = > r.Field< string>( station ),(键,行)= > rows.OrderByDescending(r = > r.Field< DateTime>( date))。First())
.CopyToDataTable();


I have a datatable .Now I want to filter that datatable using linq .datatable have many column but like

station   max_temp  min_temp   date
XYZ       14.5       3.5        26-5-2016
XYX       13.5       3.5        25-5-2016
ABC       14.5       3.5        26-5-2016
ABC       12.5       5.5       23.5.2016



Now I want to select in datatable like this

XYZ     14.5       3.5        26-5-2016
ABC     14.5       3.6       26.5.2016



What I have tried:

DataView dv = new DataView(dtExtraRowOfXML);
            dv.Sort = "DateTime DESC";

            var x = (from r in dtExtraRowOfXML.AsEnumerable() select r["Station"]).Distinct();


            DataTable dtfinalXML = dt1.AsEnumerable().Union(dtExtraRowOfXML.AsEnumerable(), DataRowComparer.Default).CopyToDataTable();

解决方案

Something like this should work:

DataTable dtfinalXML = dt1.AsEnumerable()
    .GroupBy(r => r.Field<string>("station"), (key, rows) => rows.OrderByDescending(r => r.Field<DateTime>("date")).First())
    .CopyToDataTable();


这篇关于如何使用linq过滤数据表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆