我通过使用以下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 }
}
答案 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