2015-07-13 3 views
0
var q = from n in CS.trackers 
group n by n.Id into g 
select g.OrderByDescending(t => t.DateTime).Take(1); 

Приведенный выше код дает желаемый результат, который извлекает мне последнюю запись Id по DateTime. Но когда я пытаюсь преобразовать его в class для его преобразования в IQueryAble.Преобразовать вар к классу типа ClassTracker IQueryable

List<ClassTracker> o = (from h in q 
select new ClassTracker{ 
Id = 
} 
) 

когда я делаю Id = q. Я не получаю q.Id. Я хочу, чтобы преобразовать его к типу ClassTracker, так что я могу использовать .AsQueryAble, чтобы преобразовать его в IQueryable<ClassTracker>

ответ

0

Вы не получаете Id = q в вашем втором запросе, потому что ваш первый запрос не returing в IEnumerable<T> вместо этого он возвращается IEnumerable<IEnumerable<T>> так в вашем втором запросе вы должны сделать SelectMany как это: -

List<ClassTracker> o = (from h in q 
         from t in h 
         select new ClassTracker 
               { 
                Id = t.Id, 
                //Other properties here 
               } 
         ).ToList(); 

Но для меня вы можете сделать все это в одном запросе, как это: -

IQueryable<ClassTracker> result = (from n in CS.trackers 
        group n by n.Id into g 
        let firstObj = g.OrderByDescending(t => t.DateTime).First() 
        select new ClassTracker 
        { 
         Id = firstObj .Id, 
         //Other properties here 
        }).AsQueryable<ClassTracker>(); 
+0

Спасибо за ответ rahul. Я получаю сообщение об ошибке следующим образом. base = {"Метод« Первый »может использоваться только как конечная операция запроса. Вместо этого используйте метод« FirstOrDefault »в этом экземпляре.»} – user2998990

+0

ошибка решена. Но я не получаю последнюю запись. Я имею в виду запись, которая дважды в базе данных с разными датами. Появляются обе записи. Мне нужны только данные (одна строка) последней даты – user2998990

+0

, ошибка решена. Но я не получаю последнюю запись. Я имею в виду запись, которая дважды в базе данных с разными датами. Появляются обе записи. Мне нужны только данные (одна строка) последней даты – user2998990