0

我有这个代码

folderList = (List<SPFolder>)folderList.OrderBy(folder => Object x = folder.GetProperty("Order Folder By"); x == null ? 0 : (int)x;).ToList();

但它给了我一个语法错误。

有谁知道这里有什么问题?

谢谢。

4

3 回答 3

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数字之前,因此根本没有真正的理由进行空检查。

于 2013-06-25T17:59:27.763 回答
2

您需要大括号,因为您在 lambda 中有两个语句,并且您还需要对object运算? :符进行强制转换

folderList = folderList.OrderBy(
    folder => 
    {
        Object x = folder.GetProperty("OrderFolderBy"); 
        return x == null ? (object)0 : x;
    }).Cast<SPFolder>().ToList();
于 2013-06-25T18:00:57.727 回答
1

您可以x通过使用 null 合并运算符来避免使用中间赋值??

folderList = folderList.OrderBy(
    folder => folder.GetProperty("OrderFolderBy") ?? (object)0)
    .ToList();
于 2013-06-25T18:00:20.743 回答