Что означает проекция запроса в Entity Framework?

Я смотрю на некоторые примеры EF и пытаюсь понять, к чему именно относится "проекция запросов" при выполнении LINQ to Entities или EntitySQL. Я считаю, что это когда результаты запроса фильтруются и проецируются в анонимный тип, но не на 100% уверены.

Может кто-нибудь определить это и, возможно, предоставить небольшой запрос L2E, который использует пример этого?

Ответ 1

Проецирование - это когда результат запроса выводится на другой тип, чем запрос. Еще одна статья определила его как: процесс преобразования результатов запроса

Проецирование может быть анонимным, но может также быть конкретным. Если вы пришли из мира SQL, это похоже на столбцы, перечисленные в вашем предложении SELECT.

Пример выбора подмножества объекта в конкретный тип:

ParentObj.Select(x=> new ParentSlim { ParentID = x.ParentID,  Name = x.Name } );

.
Пример слияния с объектом в 3-й анонимный тип:
 Примечание: часть select new - это проекция.

from P in ParentObj.AsQueryable()
join C in ChildObj.AsQueryable() on P.ParentID == C.ParentID

select new {                              // <-- look ma, i'm projecting!
               ParentID = P.ParentID,
               Name     = P.Name,
               SubName  = C.Name
               RandomDate = DateTime.UtcNow()
         }