о принципе работы into into

196
29 августа 2017, 09:27

Здравствуйте. Не могу понять, когда именно данные сохраняются в ws ?

string[] websites = { "hsNameA.com", "hsNameB.net", "hsNameC.net",
    "hsNameD.com", "hsNameE.org", "hsNameF.org",
    "hsNameG.tv", "hsNameH.net", "hsNameI.tv"
    };
    var webAddrs = from addr in websites
    group addr by addr.Substring(addr.LastIndexOf('.'))
        into ws
        where ws.Count()>2
        select ws;

После группирования домена или в каждом шагу ? Не могу понять, какой последовательностью работает алгоритмы когда используются groupby и into.

Answer 1

SQL-подобный синтаксис разворачивается в последовательный вызов методов расширений LiNQ. В некоторых случаях такой синтаксис легче читается, чем длинные цепочки вызова методов.

Ваш запрос можно переписать так:

var groups = websites.GroupBy(addr => addr.Substring(addr.LastIndexOf('.')));
var webAddrs = groups.Where(ws => ws.Count() > 2);

Таким образом видно, что сначала формируются все группы и, только после этого, происходит отбор нужных групп.

Если написать последовательность вызова одной строкой (без промежуточной переменной groups) и посмотреть на результат компиляции в IL-код (например в LINQPad), вы убедитесь, что это одно и тоже.

READ ALSO
Проверка на размер файла [требует правки]

Проверка на размер файла [требует правки]

Есть код, который копирует файлыКак добавить условие на размер файлов? Если размер файла более 300 кб, то копировать не надо

180
Загрузка файлов Asp.net

Загрузка файлов Asp.net

Всем приветМне нужно реализовать загрузку файлов на сервер и сохранения пути до них в бд

265
Авторизация на сайте с использованием csrfmiddlewaretoken

Авторизация на сайте с использованием csrfmiddlewaretoken

Мне необходимо авторизоваться на сайте, и дальше работать с POST запросами, но есть проблема на сайте выдается csrfmiddlewaretokenПоэтому надо сначала...

212
Проверить нажатие Shift

Проверить нажатие Shift

Как проверить нажатие клавиши Shift в обработчике события прокрутки колёсика? У меня он вот такой:

203