OrderBy子句的问题对排序没有任何影响.我已经在调试器中完成了这个工作,并确保这是一种情况,即代码的排序行被命中并且在订单之后查看结果尚未应用.
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;
}
Run Code Online (Sandbox Code Playgroud)
Chr*_*air 11
OrderBy
返回一个执行排序的查询:它不会修改原始列表(而类似的东西List<T>.Sort
会修改原始列表)
而是试着像:
ddlOptions = ddlOptions.OrderBy(l => l.DisplayText).ToList();
Run Code Online (Sandbox Code Playgroud)
编辑:您可能想要使用ddlOptions
返回数据的类型或位置/方式,因为我们正在做一些额外的操作ToList
,但这对于这种情况来说可能是一个小问题/非问题.
尝试:
if (sort)
{
ddlOptions = ddlOptions.OrderBy(l => l.DisplayText); <===== Should work now.
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5014 次 |
最近记录: |