c# - FirstOrDefault returning Unexpected Value -
when set default value if set empty , call .firstordefault()
condition isn't met i'm not getting default value, type's default value:
int[] list = { 1, 2, 3, 4, 5 }; console.writeline(list.defaultifempty(1).firstordefault(i => == 4)); // outputs 4, expected console.writeline(list.defaultifempty(1).firstordefault(i => > 5)); // outputs 0, why??
this seems unintuitive since i'm setting .defaultifempty()
1. why doesn't output 1?
you appear misunderstand how defaultifempty
works.
list.defaultifempty(1)
returns singleton sequence containing 1
if source collection (list
) empty. since list
not empty, has no effect , source sequence returned.
as result, query same as:
int result = list.firstordefault(i => > 5);
the default of int
0
firstordefault
returns 0
if condition not met, not since list
contains no elements greater 5.
you can behaviour want using:
int result = list.cast<int?>().firstordefault(i => > 5) ?? 1;
Comments
Post a Comment