我有一个包含以下数据的数据表。
Week Score Rank
1 75.8300000000 1
2 76.6800000000 9
3 79.8787870000 4
4 0 0
5 0 0
6 0 0
7 0 0
...
53 0 0
如果数据表只有前3周(有Rank的几周),那么以下行将完美地工作。但是现在我需要添加一个获得MAX(Week)的WHERE子句,其中Score大于0.在这种情况下,返回的行将是第3周。本质上,查询将是SELECT max(week)From datatable 其中Rank> 0
DataRow[] dr = dsRanks.Tables[0].Select("Week = MAX(Week)");
我尝试了以下操作,但是我收到索引错误,因为返回了0行。
DataRow[] dr = dsRanks.Tables[0].Select("Week = MAX(Week) and Rank > 0");
感谢任何帮助。
感谢。
答案 0 :(得分:6)
使用LINQ更容易解决:
var week = dsRansk.Tables[0].AsEnumerable()
.Where(row => row.Field<int>("Rank") > 0)
.Max(row => row.Field<int>("Week"));
答案 1 :(得分:0)
在我看来,您希望具有最高编号周的数据行具有有效数据。这样的事情应该这样做:
var dr = dsRanks.Tables[0].Select("Rank > 0", "Week ASC"). LastOrDefault();
根据您的示例,dr是第3周的数据行。