我有这段代码
folderList = (List<SPFolder>)folderList.OrderBy(folder => Object x = folder.GetProperty("Order Folder By"); x == null ? 0 : (int)x;).ToList();
但它给了我一个语法错误。
有谁知道这里有什么不对吗?
感谢。
答案 0 :(得分:3)
你没有归还任何东西。您需要在语句lambda中返回值。您还需要用大括号包装语句以在lambda中使用多个语句。您也不能将条件运算符视为表达式;它需要是一个声明。
他们使用相同的修复方法修复。
folderList = (List<SPFolder>)folderList.OrderBy(folder => {
Object x = folder.GetProperty("OrderFolderBy");
return x == null ? 0 : x;}).ToList();
那就是说,你可以用一个表达来完成整个事情;没有必要使用多个语句:
folderList = folderList.OrderBy(folder => folder.GetProperty("OrderFolderBy") as int?).ToList();
也没有理由进行演员表演。该列表应该已经是合适的类型,并且null
和0
都先于其他数字,因此根本没有真正的理由进行空检查。
答案 1 :(得分:2)
你需要大括号,因为你在lambda中有两个语句,你还需要为object
运算符<{1}}转换为<{1}}
? :
答案 2 :(得分:1)
您可以使用空合并运算符x
来避免使用??
的中间分配。
folderList = folderList.OrderBy(
folder => folder.GetProperty("OrderFolderBy") ?? (object)0)
.ToList();