Звучит так, как вы хотите:
var words = dlFTSword.Where(pair => FTSwordIDs.Contains(pair.Key))
.Select(pair => pair.Value)
.ToList();
Обратите внимание, что это позволяет избежать поиска каждого ключа после обнаружения его присутствия.На самом деле мы не ищем ничего в словаре.Это также не включает создание каких-либо других наборов, которые Intersect
будут.
Это стоит проверить, хотя:
dlFTSword - это словарь, он статический и отсортирован по значению (включенload)
Если это Dictionary<TKey, TValue>
, то не отсортировано.Нет такого понятия, как «отсортированный» Dictionary<TKey, TValue>
.Вы можете использовать SortedDictionary<,>
или SortedList<,>
, но оба они отличаются от Dictionary<,>
.
РЕДАКТИРОВАТЬ: Если хэш-набор действительно мал, имеет смысл перебрать , что* На 1025 * больше, чем по каждой паре в словаре:
var words = FTSwordIDs.Where(key => dlFTSword.ContainsKey(key))
.Select(key => dlFTSword[key])
.OrderBy(value => value)
.ToList();
Немного уродливо искать, но это будет значительно быстрее.