Having issues with the OrderBy clause not having any impact on the sort. I have walked through this in the debugger and insuring this is a case that the sort line of the code is being hit and reviewing the results after it the order by has not been applied.
public static IEnumerable<DDLOptions<TValueType>> GetDDLOptionsViewModel<TClass, TValueType>(
IEnumerable<TClass> list,
Func<TClass, TValueType> value,
Func<TClass, string> displayText,
bool sort = true
)
{
List<DDLOptions<TValueType>> ddlOptions;
ddlOptions = list.Select(
l => new DDLOptions<TValueType>
{
Value = value(l),
DisplayText = displayText(l)
}
).ToList(); <========== Works if I put the Order By here.
if (sort)
{
ddlOptions.OrderBy(l => l.DisplayText); <===== Does NOT work here.
}
return ddlOptions;
}
OrderByreturns a query that would perform the ordering: it does not modify the original list (whereas something likeList<T>.Sortwould modify the original)Instead try something like:
You might want to play around with the type of
ddlOptionsor where/how you return the data as we’re doing an extraToListthan probably necessary, but that’s probably a minor/non-issue for this case anyway.Note that the same applies to other LINQ functions like GroupBy, Distinct, Concat – all return results rather than modifying the source collection.