LINQ OrderBy не заказывает.. ничего не меняет.. почему?
Любая идея, почему LINQ OrderBy не работает в следующем коде (нет ошибок, но метод не сортирует...)
Сначала мой собственный тип
public class IQLinksView
{
public int id { get; set; }
public int catid { get; set; }
public int? viewed {get;set;}
public string name {get;set;}
public string desc {get;set;}
public string url {get;set;}
public string pic {get;set;}
public string cat {get;set;}
}
затем запрос:
IQueryable<IQLinksView> newView =
from links in this.emContext.tbl_otherlinks
select new IQLinksView { id = links.pklinkid, catid =
links.tbl_catgeory.pkcategoryid, viewed = links.linkviewed, name = links.linkname,
desc = links.linkdesc, pic = links.linkpicture, url = links.linkurl, cat =
links.tbl_catgeory.categoryname };
До сих пор все прекрасно:-), но тогда
newView.OrderBy(x => x.viewed);
просто ничего не меняет,... Страница загружает результаты, показывая... но не упорядочивает... sniff
У меня есть Try (создание объекта-компаратора...):
newView.OrderBy(x => (Int32)x.viewed, new CompareIntegers());
тот же результат, без упорядочения...
У меня есть обходные пути, но просто интересно, чего не хватает....
Любые предложения будут оценены благодаря большому количеству: -)
Ответы
Ответ 1
Не выбрасывайте возвращаемое значение. Метод расширения OrderBy
не изменяет входные данные. Попробуйте:
newView = newView.OrderBy(x => x.viewed);
Нет причин, по которым это не сработает, если значение viewed
верное. Кроме того, убедитесь, что OrderBy
после каких-либо операций (например, Distinct
), что приведет к потере порядка.
Счастливое кодирование!