Я искал похожие проблемы, но не смог найти ни одной. Я использую запрос выбора 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)
В чем проблема, что «Вес» не принимает никакого значения?
Заранее спасибо