2010-10-22 4 views
1

Я новичок в linq, теперь мне нужно выполнить гибкую сортировку с указанным параметром сортировки. , ноLinq, как я могу выполнить гибкую сортировку?

var query = 
    from accessdoc in dt1.AsEnumerable() 
    join content in dt2.AsEnumerable() 
    on accessdoc.Field<string>("name") equals content.Field<string>("FileName") 
    into docs 
    orderby accessdoc.Field<DateTime>("CreateDate") descending //TODO: HOW TO SORT?? 

Доза не соответствует требованию. Могу ли я помочь здесь?

+1

Вы могли бы предоставить полное выражение LINQ? почему «заказ от CreateDate» не работает для вас? – akonsu

+0

он работает для меня, но который не является гибким, мне нужно сделать в качестве параметра, например, как, если параметр прошел, - «id desc»? – Elaine

+0

вар запрос = из accessdoc в dt1.AsEnumerable() присоединиться содержание в dt2.AsEnumerable() на accessdoc.Field ("имя") равна content.Field ("FileName") в Документах OrderBy accessdoc. Поле (MY_PARAMETER) по убыванию – akonsu

ответ

1

Поскольку linq завершен, вы можете сделать свой запрос, а затем применить свой вид отдельно. Если вы можете разделить, как вы немного сделать параметр сортировки, вы могли бы сделать что-то вроде этого: (этот код не был составлен, поэтому, пожалуйста, медведь со мной)

public enum SortDirection 
{ 
    Ascending = 0, //default value 
    Descending = 1 
} 

теперь, если вы передаете в выражении LinQ и направление, вы могли бы сделать что-то вроде этого:

public IQueryable<MyObject> GetWithSort(System.Linq.Expressions.Expression<Func<MyObject, TKey>> sortExpression, SortDirection direction) 
{ 
    var results = from accessdoc in dt1.AsEnumerable() 
     join content in dt2.AsEnumerable() 
     on accessdoc.Field<string>("name") equals content.Field<string>("FileName") 
     into docs 
     select...; 

    if (direction == SortDirection.Descending) 
     return results.OrderByDescending(sortExpression); 

    return results.OrderBy(sortExpression) 
} 

выбрать ... должны быть заменены, однако вы выбираете свои объекты из заявления Linq.

+0

извините ... Я забыл оценить .. сделайте это сейчас .. :) – Elaine

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