我有这个代码
folderList = (List<SPFolder>)folderList.OrderBy(folder => Object x = folder.GetProperty("Order Folder By"); x == null ? 0 : (int)x;).ToList();
但它给了我一个语法错误。
有谁知道这里有什么问题?
谢谢。
我有这个代码
folderList = (List<SPFolder>)folderList.OrderBy(folder => Object x = folder.GetProperty("Order Folder By"); x == null ? 0 : (int)x;).ToList();
但它给了我一个语法错误。
有谁知道这里有什么问题?
谢谢。
你没有返回任何东西。您需要在语句 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
数字之前,因此根本没有真正的理由进行空检查。
您需要大括号,因为您在 lambda 中有两个语句,并且您还需要对object
运算? :
符进行强制转换
folderList = folderList.OrderBy(
folder =>
{
Object x = folder.GetProperty("OrderFolderBy");
return x == null ? (object)0 : x;
}).Cast<SPFolder>().ToList();
您可以x
通过使用 null 合并运算符来避免使用中间赋值??
。
folderList = folderList.OrderBy(
folder => folder.GetProperty("OrderFolderBy") ?? (object)0)
.ToList();