2009-05-24 146 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