Как я могу объединить запрос LINQ с IQueryable <Guid> - PullRequest
0 голосов
/ 27 мая 2010

У меня есть запрос LINQ, который использует 1 таблицу + большое количество просмотров. Я хотел бы иметь возможность написать что-то вроде этого:

IQueryable<Guid> mostViewedWriters;

switch (datePicker)
{
    case DatePicker.Last12Hours:
        mostViewedWriters = from x in context.tempMostViewed12Hours
                            select x.GuidId;
        break;
    case DatePicker.Last24Hours:
        mostViewedWriters = from x in context.tempMostViewed24Hours
                            select x.GuidId;
        break;
    case DatePicker.Last36Hours:
        mostViewedWriters = from x in context.tempMostViewed36Hours
                            select x.GuidId;
        break;
}

var query = from x1 in context.Articles
join x2 in context.Authors on x1.AuthorId == x2.AuthorId
join x3 in mostViewedWriters on x2.AuthorId == x3.Id
select new { x2.AuthorName, x1.ArticleId, x1.ArticleTitle };

Вышеприведенный C # - это псевдокод, написанный для защиты невинных (меня). Суть вопроса заключается в следующем: у меня есть запрос, связанный с результатами представления. Эта точка зрения, однако, может быть одной из многих разных точек зрения. Все представления возвращают один и тот же тип данных. Я думал, что смогу создать IQueryable, который будет содержать идентификаторы, которые мне нужны, и использовать этот запрос. Увы, это усилие застопорилось.

1 Ответ

1 голос
/ 27 мая 2010

ваша проблема в том, что mostViewedWriters не имеет именованных полей, потому что это просто коллекция / запрос, который возвращает список Guid, поэтому вы должны переписать ваш запрос следующим образом:

var query = from article in context.Articles
            join author in context.Authors on article.AuthorId == author.AuthorId
            join id in mostViewedWriters on author.AuthorId == id
            select new { x2.AuthorName, x1.ArticleId, x1.ArticleTitle };

Второе условие соединения присоединяется непосредственно к значению из строки, потому что это просто Guid.(Я также изменил ваши имена переменных, чтобы сделать их немного понятнее)

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