Поделиться через


Практическое руководство. Возврат запроса из метода (руководство по программированию на C#)

Обновлен: Ноябрь 2007

В данном примере демонстрируется, как возвратить запрос из метода в возвращаемое значение и в качестве выходного параметра.

Запрос должен иметь тип IEnumerable или IEnumerable<T> или наследуемый тип, например IQueryable<T>. Поэтому любое возвращаемое значение или выходной параметр метода, возвращающего запрос, должны иметь этот тип. Если метод материализует запрос в устойчивый тип List<T> или Array, считается, что он должен возвращать результаты запроса, а не сам запрос. Переменную запроса, возвращенную из метода, можно формировать или изменять.

Пример выполнения запроса, переданного в метод, см. в разделе Пример сборщика объектов.

Пример

В следующем примере первый метод возвращает запрос в качестве возвращаемого значения, а второй метод возвращает запрос в качестве выходного параметра. Обратите внимание на то, что в обоих случаях возвращается запрос, а не его результаты.

class MQ
{
    IEnumerable<string> QueryMethod1(ref int[] ints)
    {
        var intsToStrings = from i in ints
                            where i > 4
                            select i.ToString();
        return intsToStrings;
    }

    static void Main()
    {
        MQ app = new MQ();

        int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

        var myQuery = app.QueryMethod1(ref nums);


        //execute myQuery
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        //modify myQuery
        myQuery = (from str in myQuery
                   orderby str descending
                   select str).
                  Take(3);

        // Executing myQuery after more
        // composition
        Console.WriteLine("After modification:");
        foreach (string s in myQuery)
        {
            Console.WriteLine(s);
        }

        // Keep console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

Компиляция кода

  • Создайте проект Visual Studio, предназначенный для платформы .NET Framework версии 3.5. По умолчанию в этом проекте имеется ссылка на файл System.Core.dll и директива using для пространства имен System.Linq.

  • Скопируйте код в созданный проект.

  • Нажмите клавишу F5, чтобы скомпилировать и запустить программу.

  • Нажмите любую клавишу для выхода из окна консоли.

См. также

Основные понятия

Выражения запросов LINQ (Руководство по программированию в C#)