Анонимный класс имеет только свойства чтения в С#. Это часто используется для объявления в linq select query для получения определенных значений из базы данных.
В моем коде у меня есть следующий запрос. Вещь, которая путала меня, выбирая новый объект анонимного класса, используя новый оператор. У меня был класс модели StudentClerkshipsLogModel
. Когда я использую имя модели, результат запроса разрешает редактирование.
var query = (from entity in _tblStudentClerkshipsLog.GetQueryable()
where entity.StudentID == intStudentID
select new StudentClerkshipsLogModel
{
StudentClerkshipID = entity.StudentClerkshipID,
StudentID = entity.StudentID,
ClerkshipID = entity.ClerkshipID,
}).ToList();
Когда я не упоминал тип после new
в select
, я не могу выйти. компилятор вызывает ошибку. анонимный объект доступен только для чтения.
var query = (from entity in _tblStudentClerkshipsLog.GetQueryable()
where entity.StudentID == intStudentID
select new
{
StudentClerkshipID = entity.StudentClerkshipID,
StudentID = entity.StudentID,
ClerkshipID = entity.ClerkshipID,
}).ToList()
Мой вопрос в том, как linq связывает два запроса по-разному. Оба запроса имеют динамическое связывание или первый - это static.
Спасибо