2016-02-09 3 views
-3

У меня есть простая таблица, содержащей 3 columsnLinq To Sql Max

Id, Version, RecId. 
1,  1, 50 
1,  2, 51 
1,  3, 52 
2,  1, 53 
2,  2, 54 
3,  1, 55 

Я хочу создать LINQ к SQL заявлению возвращающего идентификатора и самому высокую версию.

Итак, в этом примере моя инструкция LINQ должна вернуться. 1,3 2,2 3,1

+4

Stackoverflow не Give Me ETH Codes сайт. – SynerCoder

+0

Как и в случае с SQL, сначала Group By ID, затем используйте SELECT, который содержит агрегат MAX –

+0

Я пробовал писать в редакторе кода в VS, но был смущен, как указать инструкцию max, подумал, что форум предназначен для запроса: -) –

ответ

2

Вы можете использовать GroupBy и Max:

var query = db.TableName.GroupBy(x => x.Id) 
    .Select(g => new{ Id = g.Key, MaxVersion = g.Max(x => x.Version) }); 

Конечно, вы можете также создать коллекцию класса Poco вместо этого анонимного типа. Или вы могли бы цикл его в foreach:

foreach(var x in query) 
{ 
    int id = x.Id; 
    int maxVersion = x.MaxVersion; 
} 
+0

Как пропустить запрос? –

+0

@JesGudiksen: обычно вы используете 'foreach'. Я отредактировал свой ответ –

+0

Thx alot, был очень полезен :) –