返回var-type变量

时间:2012-05-17 14:35:15

标签: c#

我有一些方法,例如:

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

如何返回var-type变量?

3 个答案:

答案 0 :(得分:9)

你可以拥有它object,但是你仍然必须将其投射以适当地使用它。 dynamic是另一种选择,但可能比它的价值更麻烦。

我认为您可能想要的是IQueryable<T>,其中TPosts的类型。

答案 1 :(得分: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>();

希望它有所帮助。

答案 2 :(得分:5)

var不是类型,因此无法返回。

如果您不确定返回类型,请返回object(如Daniel建议的那样),如果它可能超过一种类型,则返回其基类型(如果有)。

在您的具体案例中,似乎是,您试图返回IEnumerable<T>

中对象的_db.Posts