首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

LINQ 查询解决方法

2012-10-14 
LINQ 查询DataTable dt的值是idcodenamevalue ...1001127...2002231...300222...4003225...5003null8...想

LINQ 查询
DataTable dt的值是
id code name value ...
1 001 12 7 ...
2 002 23 1 ...
3 002 2 2 ...
4 003 22 5 ...
5 003 null 8 ...


想用Linq 查出的条件是 name 值不为空 并且按code分组取 value 最小值那一行所有字段
如:

id code name value ...
1 001 12 7 ...
2 002 23 1 ...
4 003 22 5 ...

[解决办法]
var query=from t in dt.AsEnumerable()
where !string.IsNullOrEmpty(t.Field<string>("name"))
group t by t.Field<string>("code") into g
select g.OrderBy(x=>x.Field<int>("value")).First();
[解决办法]
DataTable dt = new DataTable();
dt.Columns.Add("id", typeof(int));
dt.Columns.Add("code", typeof(string));
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("value", typeof(int));
dt.Rows.Add(1, "001", "12", 7);
dt.Rows.Add(2, "002", "23", 1);
dt.Rows.Add(3, "002", "2", 2);
dt.Rows.Add(4, "003", "22", 5);
dt.Rows.Add(5, "003", null, 8);
var DataRowArray= dt.AsEnumerable().GroupBy(t => t.Field<string>("code")).Select(t => t.ToArray().OrderBy(tt => tt.Field<int>("value")).First()).ToArray();

热点排行