У меня есть большая коллекция пользовательских объектов, которые я получил из запроса в моей системе. Предположим, что у всех этих объектов есть 5 разных свойств - FirstName, LastName, Gender, ZipCode и Birthday. Для каждого из разных свойств я хотел бы получить список всех уникальных значений и их счетчиков и отсортировать их в порядке убывания. Это своего рода ограненная навигационная система. Поэтому, если у меня есть 5000 результатов в моем первоначальном запросе, я бы хотел, чтобы отображать первые 10 первых имен от самых популярных до наименее популярных со счетчиком рядом с ним. И тогда то же самое с другими свойствами.Что такое хорошая структура данных .NET для поиска уникальных элементов?
В настоящее время у меня есть процедура, которая проходит через каждый элемент по одному и анализирует разные свойства и хранит кучу разных хеш-таблиц с информацией. Он работает, но он очень медленный. Я думаю, что каждый элемент по одному не очень эффективен. Есть ли какой-либо другой тип структуры C#, который я мог бы использовать, чтобы облегчить получение этого типа информации? Я знаю, что SQL Server отлично справляется с этим типом вещей, но я не думаю, что это действительно возможно. Я получаю список пользовательских объектов из API другой системы. Поэтому я должен был бы взять этот список объектов и как-то поместить их в временную таблицу, и это будет поражать цель, о которой я думаю. Плюс временные таблицы SQL Server связаны с подключением, я думаю, и мое приложение будет повторно использовать соединения.
EDIT: То, что я пытаюсь избежать, - это перебирать список и обрабатывать каждый отдельный элемент. Мне было интересно, есть ли какая-то структура данных, которая позволила бы мне сортировать запрос всего списка сразу (например, базу данных) и получать информацию. Проблема в том, что наш веб-сервер с интерфейсом просто забит, потому что у нас много трафика на сервере, и люди бьют эти граненые навигационные страницы, и я ищу более эффективный способ сделать это.
Любые идеи?
Спасибо, Corey
Почему бы не выполнить подсчет и не отсортировать в _your_ системе _in_ запрос? – kennytm
Это внешняя система. У меня нет возможности делать счет и сортировать там. Я могу получить доступ только к данным через API внешней системы. Поэтому я могу сделать только следующее: List _results = SystemAPI.GetResults(); Затем, когда у меня есть список MyObjects, мне нужно выяснить, сколько из каждого из моих свойств есть. –
* «Я думаю, что каждый элемент по одному не очень эффективен». * Если кто-то придумал лучший способ, он действительно стал бы очень богатым. –