Я не понимаю, почему вам нужна позиция (не индекс!) Элементов словаря, потому что порядок элементов недетерминирован, MSDN :
Для целей перечислениякаждый элемент в словаре рассматривается как структура KeyValuePair, представляющая значение и его ключ.Порядок возврата товаров не определен.
, но в любом случае:
Подготовить данные:
IDictionary<string, List<int>> refDict = new Dictionary<string, List<int>>
{
{"item1", new List<int> {1, 2, 3}},
{"item2", new List<int> {4, 5, 6}},
{"item3", new List<int> {1, 2, 3}}
};
List<int> sourceList = new List<int> {1, 2, 3};
Поиск индексов:
var indexes = refDict.Values
.Select((list, index) => list.SequenceEqual(sourceList) ? index : -1)
.Where(x => x >= 0);
Поиск ключей:
var keys = refDict
.Where(item => item.Value.SequenceEqual(sourceList))
.Select(item => item.Key);