[#0002] Простой запрос Linq
От: Аноним  
Дата: 12.06.10 19:23
Оценка:
Функция Func() создает запрос который по идее должен выстраиваться в цепочку

names.Where( n => n.Contains( cc ) ).Where( n => n.Contains( cc ) ).Where( n => n.Contains( cc ) )


Но каким образом этот запрос может выполнится в теле Main, ведь в Main сс не определена, откуда он будет ее брать ?
Если посмотреть в отладчике то каждый foreach( c in q ) он прыгает в предикат n => n.Contains(cc) при этом в саму функцию Func() заходит только 1 раз перед циклом.
C предикатами вроде как понятно, они впринципе есть делегаты и могут жить отдельно от функции Func() , а cc вроде локальная переменная и к ней доступ извне получать по идее не должно быть возможно.

        static IEnumerable<string> Func()
        {

            string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };

            var query = names.Select(n => n);
            var cc = "a";
            query = names.Where(n => n.Contains(cc));
            cc = "r";
            query = query.Where(n => n.Contains(cc));
            cc = "y";
            query = query.Where(n => n.Contains(cc));

            return query;
        }

        static void Main(string[] args)
        {
            var q = Func();

            foreach (var c in q)
            {
                Console.WriteLine(exp);
            }

            Console.ReadKey();
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.