如何在添加到字典之前检查密钥是否存在

时间:2018-05-28 21:18:42

标签: c# .net linq .net-4.0

我通过使用以下linq代码将值添加到字典中,现在发生的是重复键条目,它是从字典中跳过两个条目,我需要至少有一个存在于字典中。如何在以下LINQ代码中执行此操作。我只想在LINQ中使用它,代码如下所示:

internal extension Int {
    internal var nanosecond: DateComponents { return nanoseconds }
    internal var second: DateComponents { return seconds }
    internal var minute: DateComponents { return minutes }
    internal var hour: DateComponents { return hours }
    internal var day: DateComponents { return days }
    internal var week: DateComponents { return weeks }
    internal var month: DateComponents { return months }
    internal var year: DateComponents { return years }
}

2 个答案:

答案 0 :(得分:6)

坦率地说,我会使用自定义扩展方法来替换ToDictionary,而不是使用Add,而是使用索引器分配:

public static Dictionary<TKey, TValue> ToDictionaryLast<TSource, TKey, TValue>(
    this IEnumerable<TSource> source, Func<TSource, TKey> keySelector,
    Func<TSource, TValue> valueSelector)
{
    var result = new Dictionary<TKey, TValue>();
    foreach(var value in source)
        result[keySelector(value)] = valueSelector(value);
    return result;
}

- 在重复键的情况下 - 保留最后一个值,而不是失败。然后用:

替换最后一个操作
.ToDictionaryLast(x => x.Key, x => x.Value);

答案 1 :(得分:3)

您需要按'module' object has no attribute 'exc'属性对其进行分组,然后从分组的子项目中对Key Select进行分组。然后,您将有效地跳过不是按键分组的第一个记录。

First