0

我有以下代码:

   public IList<Content.Grid> GetContentGrid(string pk)
    {
        // How can I define result to hold the return 
        // data? I tried the following but it does not
        // work:
        var result = new IList<Content.Grid>();

        var data = _contentRepository.GetPk(pk)
             .Select((t, index) => new Content.Grid()
             {
                 PartitionKey = t.PartitionKey
                 ....
             });

        switch (pk.Substring(2, 2))
        {
            case "00":
                return data
                    .OrderBy(item => item.Order)
                    .ToList();
                break;
            default:
                return data
                    .OrderBy(item => item.Order)
                    .ToList();
                break;

        }
    }

VS2012 告诉我不需要中断,所以我想做的是从开关内部删除返回,将结果存储在一个变量中,然后在开关完成后有:

return result;

有人可以告诉我如何声明名为 result 的变量。我尝试了以下方法,但这给出了语法错误:

var result = new IList<Content.Grid>();
4

5 回答 5

2

您已经在开关中返回了结果:

return data
    .OrderBy(item => item.Order)
    .ToList();

没有必要在切换之前/之后声明变量,因为您使用返回语句跳出切换。(这就是为什么你不需要休息)

但是,您可以使用以下内容:

IList<Content.Grid> result;

...

case "00":
            result = data
                .OrderBy(item => item.Order)
                .ToList();
            break;
        default:
            result = data
                .OrderBy(item => item.Order)
                .ToList();
            break;

...

return result;
于 2012-11-26T09:52:40.387 回答
1

IList 是一个接口。您不能构造接口的实例。您必须创建实现该接口的具体类型的实例,例如:

var result = new List<Content.Grid>();
于 2012-11-26T09:49:32.420 回答
1

IList是一个接口,它不能被实例化。您需要选择特定实现IList并创建非抽象类的对象,例如List

var result = new List<Content.Grid>();
于 2012-11-26T09:49:59.093 回答
0

您不能实例化接口,只能实现它们。

public class SomeList<T> : IList<T>
{

}

您需要一个类型参数才能转到IList,所以在您的普通类中使用

IList<T> result = New SomeList<T>();

那应该这样做。

于 2012-11-26T09:51:56.537 回答
-1

不要使用var,你会没事的;您不需要默认值,因为它只会被覆盖。

IList<Content.Grid> result;
于 2012-11-26T09:50:28.837 回答