Более эффективный запрос Linq-to-SQL - PullRequest
0 голосов
/ 18 декабря 2009

Я ищу более эффективный способ сделать это ... (см. Ниже) ... Я должен выполнить это семь раз, поскольку у меня есть семь тематических статей. Идентификатор, который я передаю, является идентификатором страницы (aka featurearticles.fk_pageID_item1 featurearticles.fk_pageID_item2).

У меня все в порядке с присоединением к таблице и не выбрал *, как это было. Я также в порядке с созданием временного объекта для хранения информации.

DataAccess.Page pgf1 = (from p in db.Pages
where p.pageID == featurearticles.fk_pageID_item1
select p).FirstOrDefault();

PageArticle paf1 =(from pa in db.PageArticles
where pa.page_art_pageID == pgf1.pageID &&
pa.page_art_isCurrent ==true
select pa).FirstOrDefault();

Article af1 = (from a in db.Articles
where a.articleID == paf1.page_art_articleID
select a).FirstOrDefault();
  1. получает страницу.
  2. получает текущую версию.
  3. получает информацию для этой версии.

Я застрял с этим макетом стола.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 декабря 2009

Посмотрите на это. Это все внутренние соединения, и я не уверен, что это именно то, что вам нужно? Если нет, дайте мне знать.

var tp = from p in Pages
    join pa in PageArticles on p.pageID equals pa.page_art_pageID
    join a in Articles on pa.page_art_articleID equals a.articleID
    where p.pageID == featurearticles.fk_pageID_item1
    && pa.page_art_isCurrent
    select new { p, pa, a };

Я также могу изменить новый выбор на те поля, которые вам нужны.

1 голос
/ 18 декабря 2009

Большая часть кредита за это идет astander.

Article af1 = (from p in db.Pages
               join pa in db.PageArticles on p.pageID equals pa.page_art_pageID
               join a in db.Articles on pa.page_art_articleID equals a.articleID
               where p.pageID == featurearticles.fk_pageID_item1
               && pa.page_art_isCurrent == true
               select a).FirstOrDefault();

Вы сможете использовать этот запрос как замену тому, что у вас уже есть.

...