У меня есть ситуация, когда мне нужно отобразить ItemID и ItemName из Items таблицы. Допустим, ItemID - это 002, а ItemName - это Apple. У меня есть другое поле с именем SupplementaryItems в таблице, в которой хранятся связанные ItemID , разделенные | (разделитель), что-то вроде 003 | 004 | 005 . Я использую MVC3 с шаблоном хранилища, что-то вроде
var items = _dataContext.items.AsQueryable();
items = from i in items
where i.Item_ID.equals(itemId)
select i;
Приведенный выше запрос с itemId 002 вернет Apple, которая работает нормально. Теперь мне также нужно отобразить все дополнительные элементы с соответствующими им именами элементов, что означает, что мне нужно разбить дополнительный элемент на массив и использовать что-то вроде дополнения. Элемент массив содержит идентификатор элемента. Но в этом случае мне понадобятся два отдельных вызова базы данных, первый из них вернет только элемент с itemID, где я сохраняю AdditionalmentaryItemID в переменной.
var supplementMaterialsArr = supplementMaterials.ToString().Split('|');
и второй вернет все элементы, и я переберу второй, чтобы получить ItemName из ItemID. К вашему сведению, этот подход требует двух отдельных вызовов из контроллера, что-то вроде
var itemInformationAll = _repository.GetAllItems();
var itemInformation = _repository.GetItemDetailInformation(id);
Я думаю, что это не очень эффективный подход. У кого-нибудь есть лучшее решение для этого? Должен ли я использовать LINQ self join? Но если я использую self join, смогу ли я получить extrametaryItem с соответствующим им ItemName одним запросом?
Любые предложения будут высоко оценены.