LINQ aggregate functions on bytes, shorts, and unsigned values?

Enumerable.Sum() is only defined for IEnumerable (int)x) and less explicitly you can get away with short numbersArray = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int sumArray = numbersArray. Sum(x => x) In this case, you are now invoking the overload : int Enumerable. Sum( this IEnumerable source, Func selector ) : Here I mean "operator" in the sense of an function F:(short x short) -> short.

This is because there is no addition operator* for short or any of the other primitive types (short + short is int, for example). You have to say: short numbersArray = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int sumArray = numbersArray. Sum(x => (int)x); and less explicitly you can get away with short numbersArray = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int sumArray = numbersArray.

Sum(x => x); In this case, you are now invoking the overload: int Enumerable. Sum( this IEnumerable source, Func selector ) *: Here I mean "operator" in the sense of an function F:(short x short) -> short.

– Akash Kava Jun 13 at 19:03 1 @Akash: Most all C based languages have automatic promotion to int before any arithmetic happens. You'd probably have to go all the way back to K&R to find that one. – Billy ONeal Jun 13 at 19:04 Not so much to avoid checking of overflow, but you can overflow very quickly with short.

See: stackoverflow.Com/questions/4343624/… – Jason Jun 13 at 19:04.

Enumerable. Sum accepts either ints, longs, singles or doubles. You can cast the numbers to make them eligible as the parameter: short numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int sum = numbers.

Cast (). Sum (); As an alternative, you can provide a Func lambda that selects ints for you: short numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int sum = numbers. Sum (x => x); // lambda type is inferred as Func I declare sum as int because it's really unsafe to think a sum of shorts is a short itself.It is even reflected in the fact that you have to do explicit casting when adding shorts: int sum = a + b; short shortSum = (short)(a + b); // you can use an explicit casting to get short So if you're certain you're not going to overflow, just cast the result: short shortSum = (short) numbers.

Cast (). Sum ().

The Sum extension method doesn't have an overload that takes an IEnumerable. Instead, you can pass a lambda expression that implicitly converts the shorts to ints: short sumList = (short)numbersList. Sum(i=>i).

This confused me, but I was able to make it work like: List li = new List {1,2,3,4,5}; short l = (short)li. Sum(i => i).

How would you go about using LINQ aggregate functions (ex. Sum, Average) on collections of bytes, shorts, and unsigned values? Granted, I'm a new C# programmer, but I can't even figure out how to get something that compiles let alone has proper output.

I can't either of these samples to work.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions