Я хочу найти ключ в словаре и заменить значение, если оно найдено, или добавить ключ/значение, если это не так.
код:
public class MyObject
{
public string UniqueKey { get; set; }
public string Field1 { get; set; }
public string Field2 { get; set; }
}
LINQ Solution (бросает An item with the same key has already been added.
):
Dictionary<string, MyObject> objectDict = csvEntries.ToDictionary(csvEntry => csvEntry.ToMyObject().UniqueKey, csvEntry => csvEntry.ToMyObject());
Решение ForEach (работает):
Dictionary<string, MyObject> objectDict = new Dictionary<string, MyObject>();
foreach (CSVEntry csvEntry in csvEntries)
{
MyObject obj = csvEntry.ToMyObject();
if (objectDict.ContainsKey(obj.UniqueKey))
{
objectDict[obj.UniqueKey] = obj;
}
else {
objectDict.Add(obj.UniqueKey, obj);
}
}
Мне действительно понравилось решение LINQ, но, поскольку оно стоит, оно выдает вышеупомянутую ошибку. Есть ли хороший способ избежать ошибки и использовать LINQ?