, если вы выполняете Linq to Entity
, вы не можете использовать ClassType
с new
в закрытии select
запроса only anonymous types are allowed (new without type)
взглянуть на этот фрагмент моего проекта
//...
var dbQuery = context.Set<Letter>()
.Include(letter => letter.LetterStatus)
.Select(l => new {Title =l.Title,ID = l.ID, LastModificationDate = l.LastModificationDate, DateCreated = l.DateCreated,LetterStatus = new {ID = l.LetterStatusID.Value,NameInArabic = l.LetterStatus.NameInArabic,NameInEnglish = l.LetterStatus.NameInEnglish} })
^^ without type__________________________________________________________________________________________________________^^ without type
из вас добавил new keyword
в закрытии Select даже в complex properties
, вы получите эту ошибку
, поэтому
blockquote>remove
ключевое словоClassTypes from new
Linq to Entity
queries ,,, потому что он преобразуется в sql-оператор и выполняется на SqlServer
, поэтому, когда я могу использовать
new with types
на закрытииselect
?вы можете использовать его, если вы имеете дело с
LINQ to Object (in memory collection)
//opecations in tempList , LINQ to Entities; so we can not use class types in select only anonymous types are allowed var tempList = dbQuery.Skip(10).Take(10).ToList();// this is list of <anonymous type> so we have to convert it so list of <letter> //opecations in list , LINQ to Object; so we can use class types in select list = tempList.Select(l => new Letter{ Title = l.Title, ID = l.ID, LastModificationDate = l.LastModificationDate, DateCreated = l.DateCreated, LetterStatus = new LetterStatus{ ID = l.LetterStatus.ID, NameInArabic = l.LetterStatus.NameInArabic, NameInEnglish = l.LetterStatus.NameInEnglish } }).ToList(); ^^^^^^ with type
после того, как я выполнил
ToList
по запросу, он сталin memory collection
, поэтому мы можем использоватьnew ClassTypes
в выберите