ruanzx / morelinq

Automatically exported from code.google.com/p/morelinq
Apache License 2.0
0 stars 0 forks source link

MaxByOrDefault #96

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Currently, MaxBy will throw an exception if executed on an empty enumerable.  I 
would like a way to provide it with a default value to use, or have it use 
default(TSource).

Example usage:
var emptyEnumerable = Enumerable.Empty<Person>();
var result = emptyEnumerable.MaxByOrDefault(person => person.Age);
Assert.Equal(0, result);

result = emptyEnumerable.MaxBy(person => person.Age, 10);
Assert.Equal(10, result);

Original issue reported on code.google.com by mi...@zoltu.net on 8 Dec 2014 at 8:12

GoogleCodeExporter commented 9 years ago
I also think that Max, Min, MaxBy and MinBy would benefit from having 
...IsDefault methods.

I think though that if returning a value type, the return type should be a 
nullable if possible.

Original comment by rmy...@gmail.com on 25 Jul 2015 at 12:36

GoogleCodeExporter commented 9 years ago
If you want null out for a value type then you can achieve this by

emptyEnemurable.MaxByOrDefault<Nullable<UInt32>>(person => person.Age);
Assert.Equal(null, result);

or

emptyEnumerable.MaxBy<Nullable<UInt32>>(person => person.Age, null);
Assert.Equal(null, result);

Original comment by mi...@zoltu.net on 25 Jul 2015 at 5:19

GoogleCodeExporter commented 9 years ago
This issue has been migrated to:
https://github.com/MoreLINQ/morelinq/issues/96
The conversation continues there.
DO NOT post any further comments to the issue tracker on Google Code as it is 
shutting down.
You can also just subscribe to the issue on GitHub to receive notifications of 
any further development.

Original comment by azizatif on 21 Aug 2015 at 6:56