2009-05-24 173 views
2

我需要Enumarable值从下面的类,但给错误返回linq中Class的可枚举值?


    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“:静态类型不能用作返回类型

回答

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

System.Linq.Enumerable是一个静态类并在其上定义了一堆扩展方法。您或许想返回IEnumerable<string>

0

可枚举是一个静态类,你想要做的是返回一个IEnumerable:

public static IEnumerable<string> LoadDataByName(string name) 
    { 
     //do stuff 
    } 

我假设s.Name在你的例子是一个字符串,这就是为什么方法应该返回IEnumerable的<字符串>。如果是另一种类型,则将其更改为该类型....

编辑:好吧,我想这不是一个字符串。将其更改为:

public static IEnumerable<StuffDepartman> LoadDataByName(string name) 
    { 
     //do stuff 
    } 
+0

如果我添加您的代码,错误更改.... – Penguen 2009-05-24 17:02:44

+0

错误1:不能隐式地将类型'字符串'转换为'布尔' – Penguen 2009-05-24 17:02:52