У меня есть список, который я хочу поместить в словарь, для простоты вставляемые значения будут одинаковыми.C# ToDictionary with ContainsKey check
Я могу использовать петлю foreach.
List<string> list = new List<string>();
list.Add("Earth");
list.Add("Wind");
list.Add("Fire");
list.Add("Water");
list.Add("Water"); // Will NOT BE INSERTED using the foreach loop
var myDictionary= new Dictionary<string, int>();
foreach (string value in list)
{
if (!myDictionary.ContainsKey(value))
{
myDictionary.Add(value, 1);
}
}
Указанные работы.
Но я хочу использовать ToDictionary сделать то же самое следующим образом -
Dictionary<string, int> myDictionary2 = list.ToDictionary(i => i, i => 1);
Конечно это не удается, потому что я добавляю «Вода» в два раза.
Каков правильный способ проверки дубликатов записей при использовании ToDictionary?
Это будет работать, но мне интересно, действительно ли ОП хочет набор. – Gabe
@Gabe: Не уверен, что я не понимаю ваши комментарии в контексте вопроса - можете ли вы уточнить? – BrokenGlass
Словарь, где все значения равны 1, является по существу просто набором. Если пользователь никогда не обращается к значениям, фактический словарь не нужен. – Gabe