LINQ само присоединиться в ASP.NET MVC3 - PullRequest
2 голосов
/ 27 мая 2011

У меня есть ситуация, когда мне нужно сделать самостоятельное соединение на столе в 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 ' Явное преобразование существует.

Любые предложения будут высоко оценены.

1 Ответ

1 голос
/ 19 июня 2011

Попробуйте это:

var items1 = _dataContext.Items.AsQueryable();
var items2 = from series in items1 
        join members in items1 on series.Series_Title
        equals members.Series_Title
        where series.Item_ID== 'S117'
        select series;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...