Подскажите пожалуйста в чем преимущество использования в Linq запросе комбинации Join+Into перед group. Что один, что второй используются для группировки сходных по определенных критериев объектов в массив. Однако зачем использовать Join+Into если, все сортировочные критерии есть и так в нужном массиве. Например есть две последовательности:
List
В чем преимущество, например этого запроса
var v = from t in classes
group t by t.id;
От этого :
var v = from t in type
join cl in classes
on t equals cl.id
into Mass
select new { Type = t, Mass };
Ведь в результате мы все равно как в первом так и во втором случае получим набор из массивов где объекты определены по одному признаку. И есть ли такой пример, где невозможно воспользоваться одним способом, зато можно другим ? Спасибо.
Ответ
Group by - это аггрегация данных, т.е. результат будет содержать столько же или меньше (в случае повтороения значений) строк.
Join - это содениение данных, т.е. результат будет содержать столько же и никак не меньше строк.
Если в список type будут повторяющиеся значения, то результат второго запроса поменяется. Для такого списка:
var type = new List
Второй запрос вернет семь строк, а не 4 как первый.
DotNetFiddle пример
В другом случае, когда не для каждого значения id из списка type будут существовать соответствующие значения в списке classes - во втором запросе, для каждого такого значения id из списка type вернется пустой список значений из classes.
DotNetFiddle пример
Комментариев нет:
Отправить комментарий