Вернуть перечисляемое значение из класса в linq?

2

Мне нужно значение 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 ': статические типы не могут использоваться как типы возврата

Теги:
linq

3 ответа

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>, а первый может быть неявным образом отбрасываться последним. = необходимо изменить на ==, так как здесь вы хотите использовать оператор равенства, а не оператор-ассистент. Другие изменения просто убираются.

  • 0
    ваши коды дают мне ошибку: неуниверсальный тип 'System.Linq.Enumerable' не может использоваться с аргументами типа
  • 0
    Вы не можете сделать это "Enumerable <StuffDepartman>"
Показать ещё 6 комментариев
1

System.Linq.Enumerable - это статический класс с множеством методов расширения, определенных на нем. Возможно, вы хотели бы вернуть IEnumerable<string>.

0

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
    }
  • 0
    если я добавлю ваши коды, ошибка изменится ....
  • 0
    Ошибка 1: не удается неявно преобразовать тип 'string' в 'bool'
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню