我有一些方法,例如:
public VAR GetAllPosts()
{
var post = from p in _db.Posts select p;
return post;
}
如何返回var-type变量?
答案 0 :(得分:9)
你可以拥有它object
,但是你仍然必须将其投射以适当地使用它。 dynamic
是另一种选择,但可能比它的价值更麻烦。
我认为您可能想要的是IQueryable<T>
,其中T
是Posts
的类型。
答案 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