не может установить свойство объекта в запросе linq в C # - PullRequest
0 голосов
/ 14 января 2019

Я искал похожие проблемы, но не смог найти ни одной. Я использую запрос выбора linq для извлечения некоторого объекта из базы данных в коллекцию объектов с именем "AudioBookDTO". Этот объект имеет много свойств, что ясно из следующего фрагмента кода.

from a in _unitOfWork.AudiobooksViewRepository.GetAll()
            where a.EntityTitle.Replace(" ", "").Contains(input.Replace(" ", ""))
            group a by new { a.Title, a.Identifier, a.AudioBookId, a.RecordVersion, a.Slug, a.EntityTitle } into grp
            select new AudioBookDTO
            {
                Title = grp.Key.Title,
                Identifier = grp.Key.Identifier,
                AudioBookId = grp.Key.AudioBookId,
                RowVersion = grp.Key.RecordVersion,
                Slug = grp.Key.Slug,
                HitObject =
                (grp.Min(a => a.EntityType) == 2) ? grp.Key.EntityTitle + " (Author)" :
                (grp.Min(a => a.EntityType) == 3) ? grp.Key.EntityTitle + " (Translator)" :
                (grp.Min(a => a.EntityType) == 4) ? grp.Key.EntityTitle + " (Narrator)" :
                (grp.Min(a => a.EntityType) == 5) ? grp.Key.EntityTitle + " (Genre)" :
                (grp.Min(a => a.EntityType) == 6) ? grp.Key.EntityTitle + " (Publisher)" :
                null,
                HitObjectType = grp.Min(a => a.EntityType),
                Weight = (grp.Min(a => a.EntityType) == 2) ? 100 : 90,
}).OrderBy(a => a.HitObjectType);

"вход" - это ключевое слово, которое я использую для поиска в базе данных. Проблема в том, что все свойства объекта будут назначены правильно, кроме «Веса», который я назначаю на основании условия. Позвольте мне прояснить, что даже если я скажу «Вес = 100», конечный результат не будет иметь значение, которое я присвоил, и примет 0.

Другой совет заключается в том, что AudiobooksViewRepository - это представление, которое я определил в базе данных, и имеет следующие столбцы в результате: заголовок, идентификатор, AudiobookId, RecordVersion, Slug, EntityType, EntityTitle.

Кроме того, я использую сервисный контроллер, и запрос не будет выполняться в сервисе, потому что OData обрабатывает нумерацию страниц. Таким образом, сделать что-то вроде ToList () невозможно из-за нумерации страниц, выполняющей работу на уровне контроллера. (Да, это WebAPI)

В чем проблема, что «Вес» не принимает никакого значения? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...