如何使用linq过滤数据表 [英] How to filter datatable using linq
本文介绍了如何使用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屋!
查看全文