2

我有一些方法,例如:

    public VAR GetAllPosts()
    {
        var post = from p in _db.Posts  select p;
        return post;
    }

如何返回 var 类型的变量?

4

3 回答 3

9

您可以拥有它object,但是您仍然必须强制转换它才能正确使用它。dynamic是另一种选择,但可能比它的价值更麻烦。

我想你可能想要IQueryable<T>TPosts.

于 2012-05-17T14:36:24.367 回答
6

根据您的代码,您知道它将是 Posts 的枚举,所以返回

public IEnumerable<Posts> GetAllPosts()
    {
        var post = from p in _db.Posts  select p;
        return post;
    }

或者

public IEnumerable<Posts> GetAllPosts()
    {
        return from p in _db.Posts  select p;
    }

如果你想硬核,你可以使用这样的东西,这是 T 的泛型类型,你必须调用具有所需类型的方法,并在其中验证类型并做你喜欢的事情。

  public List<T> GetData<T>()
  {
      //Validate the type and do something
      if (typeof(T) == typeof(MyClass))
      {
         List<MyClass> lst = new List<MyClass>();
         lst.Add(new MyClass { ClassProperty = "Value" });

         return lst as List<T>;
     }
     else // do something else
     {
       return null;
     }
   }

要调用此方法,您需要传递正确的类型

List<MyClass> list = GetData<MyClass>();

希望能帮助到你。

于 2012-05-17T14:38:59.307 回答
5

var不是类型,所以不能返回。

如果您不确定返回类型,请返回object(如 Daniel 建议的那样),如果它可以多于一种类型,请返回其基本类型(如果有)。

在您的具体情况下,您似乎正试图IEnumerable<T>返回_db.Posts

于 2012-05-17T14:38:27.543 回答