c# - Sort list where specific character exists within string -
c# - Sort list where specific character exists within string -
here's hypothetical you. if have list of strings, possible rank list given character existing within string?
consider pseudo-code:
list<string> bunchofstrings = new list<string>; bunchofstrings.add("this should not @ top"); bunchofstrings.add("this should not @ top either"); bunchofstrings.add("this should not @ top"); bunchofstrings.add("this *should @ top"); bunchofstrings.add("this should not @ top"); bunchofstrings.add("this should *somewhere close top"); buncofstrings.orderby(x => x.contains("*"));
in above code, want re-order list whenever asterisk (*) appears within string, puts string @ top of list.
any ideas if possible linq or similar?
assuming want prioritise strings based on position of *
, do
bunchofstrings.orderbydescending(x => x.indexof("*"))
use orderbydescending
because strings don't contain *
homecoming -1
.
actually, looking farther it's not going work straight out box indexof
. orderbydescending
work going highest ranked index, in case going this should *somewhere close top
rather this *should @ top
because *
has higher index in string.
so work need manipulate rankings little , utilize orderby
instead
bunchofstrings.orderby(x => { var index = x.indexof("*"); homecoming index < 0 ? 9999 : index; });
note - 9999
aribtrary value can assume indexof
never exceed
see live example
c# linq lambda custom-lists
Comments
Post a Comment