我有一個簡單相加的擴展:C#LINQ總和()擴展爲大量
public static int? SumOrNull<TSource>(this IEnumerable<TSource> source, Func<TSource, int> projection)
{
return source.Any()
? source.Sum(projection)
: (int?)null;
}
但它會導致System.OverflowException: Arithmetic operation resulted in an overflow.
我想要做的是這樣的:
public static ulong? SumOrNull<TSource>(this IEnumerable<TSource> source, Func<TSource, int> projection)
{
return source.Any()
? source.Sum(projection)
: (ulong?)null;
}
但是Linq Sum沒有重載,返回ulong和編譯錯誤。 任何方式來使這項工作?
cast'source.Sum(projection)'to'ulong' –
可能有解決方法:'decimal.MaxValue> ulong.MaxValue'返回'true'因此'Sum(e =>(decimal)e.Value)'。請記住,Linq-to-Sql不喜歡黑客。 – PTwr
你需要ulong嗎?也許很長就足夠了? – slawekwin