我需要来自下层的可吸引价值,但会给出错误
public static Enumerable LoadDataByName(string name)
{
List<StuffDepartman> Stuff = (List<StuffDepartman>)HttpContext.Current.Session["Stuffs"];
var stuffs = from s in Stuff select s;
stuffs = from s in Stuff where s.Name = name select s.Name;
return stuffs.AsEnumerable();
}
但是给我错误: System.Linq.Enumerable':静态类型不能用作返回类型
答案 0 :(得分:2)
在.NET 3.5中,Enumerable
中存在静态System.Linq
,其中包含用于操作IEnumerable
的扩展方法 - 这不是您想要的(或者显然是可以)返回。将它更改为IEnumerable
,这是非通用的可枚举类(以及我认为你想要的),并且一切都应该正常工作。
更好的是,使用IEnumerable
的通用版本,如下:
public static IEnumerable<StuffDepartman> LoadDataByName(string name)
{
var stuffs = (List<StuffDepartman>)HttpContext.Current.Session["Stuffs"];
return (from s in stuffs where s.Name == name select s.Name);
}
另外,请注意,在返回之前不需要调用AsEnumerable
,因为List<T>
实现了IEnumerable<T>
,前者可以隐式地转换为后者。 =
需要更改为==
,因为您希望在此处使用相等而非分配运算符。其他变化只是整理。
答案 1 :(得分:1)
System.Linq.Enumerable
是一个静态类,其上定义了一堆扩展方法。您可能想要返回IEnumerable<string>
。
答案 2 :(得分:0)
Enumerable是一个静态类,你想要做的是返回一个IEnumerable:
public static IEnumerable<string> LoadDataByName(string name)
{
//do stuff
}
我假设你的例子中的s.Name是一个字符串,这就是该方法应该返回IEnumerable&lt; string&gt;的原因。如果它是另一种类型,则将其更改为该类型....
编辑:好的,我猜这不是一个字符串。将其更改为: public static IEnumerable<StuffDepartman> LoadDataByName(string name)
{
//do stuff
}