2014-02-05 2 views
1

У меня есть datatable со следующими данными.Datatable.Select с max (col) и предложением WHERE?

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 

Если DataTable был только первые 3 недели (недель с Rank), то следующая строка будет работать отлично. Но теперь мне нужно добавить предложение WHERE, которое получает MAX (неделя), где Score больше 0. В этом случае возвращаемая строка будет третьей. По сути, запрос будет SELECT max (неделя). From datatable где Ранг> 0

DataRow[] dr = dsRanks.Tables[0].Select("Week = MAX(Week)"); 

Я пробовал следующее, но получаю индексную ошибку, потому что возвращается 0 строк.

DataRow[] dr = dsRanks.Tables[0].Select("Week = MAX(Week) and Rank > 0"); 

Любая помощь приветствуется.

Спасибо.

+1

Я не вижу, где 'weeknum' приходит. –

ответ

0

Мне кажется, что вы хотите строку данных с наибольшим номером недели, который имеет достоверные данные. Что-то вроде этого следует сделать это:

var dr = dsRanks.Tables[0].Select("Rank > 0", "Week ASC"). LastOrDefault(); 

Согласно вашему примеру др является строка данных для Недели 3.

+0

Спасибо. Это сработало и LastOrDefault(), чтобы исключить исключение «Sequence contains no elements». –

+0

@ user2520528 Рад, что я мог помочь. Если у вас больше нет проблем, не забудьте отметить это. Спасибо – tinstaafl

+0

Как я могу пометить его как ответ? –

5

легче решить, используя LINQ вместо:

var week = dsRansk.Tables[0].AsEnumerable() 
    .Where(row => row.Field<int>("Rank") > 0) 
    .Max(row => row.Field<int>("Week")); 
+0

Элегантность как есть –

+0

Как мне сделать неделю как DataRow []? –

+0

@ user2520528 У вас нет, потому что это не массив строк данных, это целое число. Невозможно передать целое число в массив строк данных. Если вы хотите, чтобы указанная строка представляла эту неделю, вы можете использовать 'OrderByDescending' вместо' Max', а затем 'Take (1)' или 'First' на этом результате, если хотите. – Servy

Смежные вопросы