我有一个方法可以对列表进行排序< T>获取bool参数,指示是按ascending
还是按descending
排序。
我想使用var
作为返回类型。
protected void SortlistBy(bool IsByDescending)
{
var result;
// Initialize the var according to parameter value
if (IsByDescending == false)
result = listModelElements.OrderBy(x => sort(x)).ToList();
else
result = listModelElements.OrderByDescending(x => sort(x)).ToList();
}
我收到以下错误:Implicitly-typed local variables must be initialized
。
有什么想法吗?
答案 0 :(得分:1)
这是不可能的。你必须声明一个类型。
var
不是后期绑定的关键字。
答案 1 :(得分:1)
你根本无法 - 变量的类型必须在声明点明确声明或可推断。并且,由于变量未被赋值,因此编译器无法推断其类型。
只需将result
声明为IEnumerable<T>
或IList<T>
。
答案 2 :(得分:1)
您可以使用三元运算符,如:
var result = IsByDescending ?
listModelElements.OrderByDescending(x => sort(x)).ToList() :
listModelElements.OrderBy(x => sort(x)).ToList();