Мне нужно значение Enumarable из класса ниже, но дайте ошибку
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 ': статические типы не могут использоваться как типы возврата
В .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>
, а первый может быть неявным образом отбрасываться последним. =
необходимо изменить на ==
, так как здесь вы хотите использовать оператор равенства, а не оператор-ассистент. Другие изменения просто убираются.
System.Linq.Enumerable
- это статический класс с множеством методов расширения, определенных на нем. Возможно, вы хотели бы вернуть IEnumerable<string>
.
Enumerable - это статический класс, то, что вы хотите сделать, это вернуть IEnumerable:
public static IEnumerable<string> LoadDataByName(string name)
{
//do stuff
}
Я предполагаю, что s.Name в вашем примере является строкой, поэтому метод должен возвращать IEnumerable <string> . Если это другой тип, то измените его на этот тип....
EDIT: Хорошо, я думаю, это не строка. Измените его на:
public static IEnumerable<StuffDepartman> LoadDataByName(string name)
{
//do stuff
}