хочу, чтобы Запрос сделал порядок переменной в запросе Linq

Как сделать порядок переменной Столбца, потому что у меня есть выпадающее на странице, и я хочу показать, что сетка согласно порядку sord, выбранному в этом, Выпадает, например, Цена, Код, оценка, описание и т.д. и т.д. и я, donot хотят записать отдельный запрос для каждого столбца.

from lm in lDc.tbl_Products
where lm.TypeRef == pTypeId
 orderby lm.Code ascending
 select new; 
5
задан Azhar 20 June 2010 в 07:04
поделиться

3 ответа

Если вы хотите выполнить сортировку с помощью SQL, то вам нужно будет передать столбец/тип сортировки. Запрос откладывается до тех пор, пока вы не выполните select, поэтому вы можете составить запрос по шагам и выполнить его следующим образом:

// Do you query first.  This will NOT execute in SQL yet.
var query = lDC.tbl_Products.Where(p => p.TypeRef == pTypeId);

// Now add on the sort that you require... you could do ascending, descending,
// different cols etc..
switch (sortColumn)
{
    case "Price":
        query = query.OrderBy(q => q.Price);
        break;
    case "Code":
        query = query.OrderBy(q => q.Code);
        break;
    // etc...
}

// Now execute the query to get a result
var result = query.ToList();

Если вы хотите сделать это вне SQL, то просто получите основной результат без сортировки, а затем примените OrderBy к результату на основе критериев сортировки, которые вам нужны.

6
ответ дан 14 December 2019 в 01:01
поделиться

Вы можете «создать» запрос LINQ в отдельные шаги.

Сгенерируйте базовый запрос для возврата несортированной информации. Этот запрос не будет выполнен, пока вы не попытаетесь перечислить результаты.

var data = from lm in lDc.tbl_Products
           where lm.TypeRef == pTypeId
           select new;

Затем в обработчике событий примените любую желаемую сортировку перед привязкой результатов к сетке.

var orderedData = from lm in data
                  order lm.Code ascending
                  select new;

// TODO: Display orderedData in a grid.

Полный запрос, который вы перечисляете, будет оценен. Это означает, что вы можете запустить отдельный запрос для каждого элемента в раскрывающемся списке, построенный на основе «базового» запроса.

0
ответ дан 14 December 2019 в 01:01
поделиться
    public static IEnumerable<T> OrderByIf<T,TKey>(this IEnumerable<T> source, bool condition, Func<T, TKey> keySelector)
    {
        return (condition) ? source.OrderBy(keySelector).AsEnumerable() : source;
    }

Usage:

            var query = lDC.tbl_Products.Where(p => p.TypeRef == pTypeId)
                                    .OrderByIf(sortColumn == "Price", p => p.Price)
                                    .OrderByIf(sortColumn == "Code", p => p.Code);
3
ответ дан 14 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: