У меня есть ситуация, когда мне нужно сделать самостоятельное соединение на столе в LINQ. Таблица состоит из полей ItemsID, Title, SeriesTitle и многих других. Элемент может быть как серией, так и членами, и я могу сказать это, посмотрев на ItemId с буквами «S» или «M». Мне нужно получить все записи, которые являются членами серии с ItemId "S117". Я могу сделать это в простом SQL с помощью кода ниже,
select i.Series_Title, i.Item_ID, i2.Item_ID as Member_ID,
i2.Title as Member_Title, i2.Series_Title as Member_Series_Title
from Items i join Items i2 on i.Series_Title = i2.Series_Title
where i.Item_ID = "S117"
Теперь я перевел этот запрос в LINQ, который выглядит как
items = _dataContext.Items.AsQueryable();
items = from series in items
join members in items on series.Series_Title.ToLower()
equals members.Series_Title.ToLower()
where series.Item_ID.ToLower().Equals(itemId)
select series;
Последняя строка этого запроса select series
будет получать только серии, но не элементы, и мне также нужны члены.
Я использую вид MVC3 Razor, где мне нужно отобразить почти все поля, поэтому я не использую select new {....}
Даже когда я пытался использовать select new {series, members}
, я получил это исключение -
Невозможно неявно преобразовать тип
'System.Linq.IQueryable'
to 'System.LinQ.IQueryable '
Явное преобразование существует.
Любые предложения будут высоко оценены.