Вы можете сделать это, используя group by
select number, class,
sum(unix_timestamp(date1) - unix_timestamp(date2)) as class_time
from myTable
group by number,class;
Ну, Dictionary <,>. Add ()
выдает ArgumentException
, если такой ключ уже существует, так что я думаю, это может быть прецедент.
Linq использует еще два исключения DuplicateNameException и DuplicateKeyException , вы можете использовать их, если вы используете сборку system.data.
Я бы использовал InvalidOperationException
:
Исключение, которое является брошен, когда вызов метода недопустим для текущее состояние объекта.
Поскольку достоверность значения аргумента зависит от состояния объекта (то есть от того, является ли collection.Contains (item)
истинным), я думаю, что это лучшее исключение использовать.
Убедитесь, что вы добавили хорошее сообщение к исключению, которое проясняет, в чем проблема для вызывающего.
ArgumentException будет правильным исключением (Словарь также использует это исключение)
ArgumentException , вероятно, будет лучшим. Это исключение, возникающее, когда аргумент недопустим.
Я бы сказал InvalidOperationException
, потому что нельзя добавлять объект, который уже находится в коллекции
Я бы выбросил исключение ArgumentException. Это то, что делает общий System.Collections.Generic.SortedList <>
в своем методе Add
.
Из кода .NET Framework 2.0:
public void Add(TKey key, TValue value)
{
if (key == null)
{
System.ThrowHelper.ThrowArgumentNullException(System.ExceptionArgument.key);
}
int num = Array.BinarySearch<TKey>(this.keys, 0, this._size, key, this.comparer);
if (num >= 0)
{
System.ThrowHelper.ThrowArgumentException(System.ExceptionResource.Argument_AddingDuplicate);
}
this.Insert(~num, key, value);
}