Как установить OrderBy на GroupedEnumerable - PullRequest
0 голосов
/ 19 октября 2019

Мой набор результатов не сортируется. Как настроить OrderBy для типа System.Linq.GroupedEnumerable

Я преобразовал приложение из Core 1.1 в 2.2. Все перенесено в порядке, кроме одной логики, которая: 1) принимает ответ от вызова службы отображает его в GroupedEnumerable 2) принимает группированный набор и передает его в функцию, которая отображает его на объект типа System.Linq.Enumerable.SelectEnumerableIterator.

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

//response = {myService.myClient.SearchNominationsResponse}
//groupedSet = {System.Linq.GroupedEnumerable<ServiceClients.myClient.NominationObject, long>}
//result = {System.Linq.Enumerable.SelectEnumerableIterator<System.Linq.IGrouping<long, ServiceClients.myClient.NominationObject>, app.ViewModels.EvaluationSummary>}

public IEnumerable<EvaluationSummary> GetEvaluationSummaries(string sortBy, string sortOrder, Filter filter = null)
{      
    var request = Mapper.MapSearchNominationRequest(filter);
    request.IsDetailed = false;

    var response = myService.SearchNominationsAsync(request).GetAwaiter().GetResult();

    var groupedSet = response.mySet.GroupBy(n => n.SetId);

    // I get a proper result but it is not sorted
    var result = groupedSet.Select(
        g => Mapper.MapEvaluationSummary(
            g.OrderBy(g2 => sortBy + " " + sortOrder)
             .Last()));

    // Still not sorting
    result = result.OrderBy(r => sortBy + sortOrder);
    return result;    
}    

public EvaluationSummary MapEvaluationSummary(SetObject setIn)
{
    var eval = new EvaluationSummary
    {
        setDate = setIn.Date,
        setId = setIn.Id,
        setTypeId = setIn.TypeId,
        setTypeDescription = setIn.TypeDescription,
        setStatusId = setIn.StatusId,
        setStatusDescription = setIn.StatusDescription,
        setBy = setIn.Manager,
        setEmployee = setIn.employee
    };
}

Так что, на мой взгляд, у меня есть столбцы, в которых перечислены Date, Id, setEmployee. Я могу щелкнуть эти значения, чтобы создать шаблон сортировки, и вижу, что переменные sortBy и sortOrder передаются с правильными значениями, но сортировка не происходит.

Я ожидаю, что «William» появится раньше »Билл », а затем Билл появится перед« Уильямом »при переключении заголовка столбца сотрудника, на мой взгляд.

1 Ответ

0 голосов
/ 23 октября 2019

Исходя из предыдущих ответов, я все еще не уверен, смогу ли я заменить имя свойства в LINQ переменной. Чтобы исправить мою проблему и двигаться дальше, я реализовал логику JS для сортировки заголовков таблиц. У нас был собственный JS, который мы используем для форматирования таблиц в наших приложениях, но кажется, что функция сортировки никогда не работала. Во всяком случае, не ответ на мой вопрос, но именно так я решил проблему:

Логика может быть найдена по адресу: http://www.kryogenix.org/code/browser/sorttable/

-HaYen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...