2015-09-17 2 views
2

У меня есть объект List<UserLoginRecord>, который состоит из трех свойств.Запрос LINQ в списке <T> для получения списка <U> на основе минимального значения

UserID ID2  LoginTimeStamp 
1234567 300009 04/08/2015 18:55:45 
1234567 300009 04/08/2015 09:12:32 
7654321 300010 14/08/2015 11:55:45 
7654321 300010 20/08/2015 13:38:00 

Я хочу запустить запрос Linq, чтобы вернуть только первую запись для комбинации UserID и UserID2. то есть следующий выход

UserID ID2  LoginTimeStamp 
1234567 300009 04/08/2015 09:12:32 
7654321 300009 14/08/2015 11:55:45 

Я пробовал следующее, что, к сожалению, не работает. Может кто-нибудь, пожалуйста, помогите мне?

var newList = o_userLoginList.GroupBy(gby => new {gby.UserID, gby.ID2}) 
       .Select(x => new UserLoginRecord 
       { 
        UserID = x.UserID, 
        ID2 = x.ID2, 
        LoginTimeStamp = x.Min(LoginTimeStamp), 
       }); 
+1

что случилось теперь с запросом? – ASh

+6

«не работает» не дает нам никакой информации, в основном. Я подозреваю, что проблема в том, что вам нужны 'x.Key.UserID' и' x.Key.ID2', но очень важно, чтобы вы указали точную ошибку в вопросе. –

+0

Я получаю ошибки '' 'Не удается разрешить символ x.UserID''',' '' Не удается разрешить символ x.ID2''' и '' 'Не удается разрешить символ x.LoginTimeStamp''' в' ' 'Select''' часть –

ответ

3
var newList = o_userLoginList.GroupBy(gby => new {gby.UserID, gby.ID2}) 
       .Select(x => new UserLoginRecord 
       { 
        UserID = x.Key.UserID, 
        ID2 = x.Key.ID2, 
        LoginTimeStamp = x.Min(y=>y.LoginTimeStamp), 
       });