У меня есть список, считанный из базы данных, что-то вроде:
var managers = _repo.Where(xxxx).ToList();
данные менеджеров отображаются в формате json
[
{
"id":"b2071b2d-3d1a-4403-b044-0a59514c4431",
"name":"Lucy",
"mobile":"xxx"
},
{
"id":"639c108f-ec00-4fcd-814a-c3859930b1c1",
"name":"Franck",
"mobile":"xxx2"
},
{
"id":"943b2ad4-8ef0-4cf7-824e-de3a7837a1cd",
"name":"Jerry",
"mobile":"xxx3"
}
]
Теперь мне нужно изменить порядок этого списка по заданной последовательности имен, например:
var orderByName = _svc.GetManagerSortOrder(); // ["Jerry","Lucy","Franck"]
Сейчас я использую foreach, чтобы написать код. Есть ли лучший способ?
Вот мое текущее решение:
var orderByName = new List() { "Franck", "Jerry" };
var sortedManagers = new List();
foreach(string orderName in orderByName) // loop, and sort manager list based on a given name list
{
var manager = managers.Where(a => a.name == orderName).FirstOrDefault();
if (manager == null)
continue;
sortedManagers.Add(manager);
}
if(sortedManagers.Count != managers.Count) // if counts not equal, there is someone not on the name list, so these men need to be appended to the sortedManagers list
{
var sortedManagersId = sortedManagers.Select(s => s.id);
var managersNotInclude = managers.Where(a => !sortedManagersId.Contains(a.id)).ToList();
sortedManagers = sortedManagers.Concat(managersNotInclude).ToList();
}
Подробнее здесь: https://stackoverflow.com/questions/621 ... -one-field
Как отсортировать список на основе заданной последовательности одного поля? ⇐ C#
Место общения программистов C#
1720629006
Anonymous
У меня есть список, считанный из базы данных, что-то вроде:
var managers = _repo.Where(xxxx).ToList();
данные менеджеров отображаются в формате json
[
{
"id":"b2071b2d-3d1a-4403-b044-0a59514c4431",
"name":"Lucy",
"mobile":"xxx"
},
{
"id":"639c108f-ec00-4fcd-814a-c3859930b1c1",
"name":"Franck",
"mobile":"xxx2"
},
{
"id":"943b2ad4-8ef0-4cf7-824e-de3a7837a1cd",
"name":"Jerry",
"mobile":"xxx3"
}
]
Теперь мне нужно изменить порядок этого списка по заданной последовательности имен, например:
var orderByName = _svc.GetManagerSortOrder(); // ["Jerry","Lucy","Franck"]
Сейчас я использую foreach, чтобы написать код. Есть ли лучший способ?
Вот мое текущее решение:
var orderByName = new List() { "Franck", "Jerry" };
var sortedManagers = new List();
foreach(string orderName in orderByName) // loop, and sort manager list based on a given name list
{
var manager = managers.Where(a => a.name == orderName).FirstOrDefault();
if (manager == null)
continue;
sortedManagers.Add(manager);
}
if(sortedManagers.Count != managers.Count) // if counts not equal, there is someone not on the name list, so these men need to be appended to the sortedManagers list
{
var sortedManagersId = sortedManagers.Select(s => s.id);
var managersNotInclude = managers.Where(a => !sortedManagersId.Contains(a.id)).ToList();
sortedManagers = sortedManagers.Concat(managersNotInclude).ToList();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/62164951/how-do-i-sort-a-list-based-on-a-given-sequence-of-one-field[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия