У меня есть запрос Linq, который возвращает около полумиллиона строк. Однако, поскольку я не вызывал ToList(), выполнение все еще отложено. Все идет нормально.Отложенное выполнение - вывод словаря
Мне нужен вывод Dictionary<int, List<DateTime>>
из этого запроса, который возвратил бы около 100 000 записей (отличительные значения столбцов целых чисел) в словаре.
Я пытался что-то вроде этого ...
var myDictionary = new Dictionary<int, List<DateTime>>();
var myDictionaryOutput = MyQuery.Select(p => AddOrUpdateDictionary(myDictionary, p));
Где MyQuery мой запрос LINQ и AddOrUpdateDictionary это пользовательская функция я написал.
Это проект каждой записи в словарь, который не то, что я хочу.
Я хочу получить только словарь.
Данные выборки выглядит следующим образом ...
1234 | 2015-08-24 | 2015-08-25 | null |
1234 | null | 2015-08-26 | null |
2345 | null | null | 2015-08-23 |
Я хочу выход быть словарь с двумя ключами
(2 Ключи от 3-х строк < => 100000 ключей от 500000 строк) ,
1234 -> List<DateTime>{2015-08-24, 2015-08-25, 2015-08-26}
and
2345 -> List<DateTime>{2015-08-23}
Мои мысли оценивают MyQuery.ToList() и передать его в моей пользовательской функции не будет очень эффективным, как я бы тогда Переберите половину милли например, для строк, использующих ForEach.
Я ошибаюсь или есть лучший способ добиться того, что я хочу?
Это не ясно, что форма ваших данных, ни то, как вы пытаетесь чтобы выбрать 100K записей из 500K строк в результате ... –
Похоже, вы должны взглянуть на оператора 'GroupBy' –
Спасибо, Jon, это был мгновенный ответ. Я уточнил свой вопрос с дополнительной информацией. – InquisitiveLad