更高效的Linq-to-SQL查询

时间:2009-12-18 06:38:06

标签: c# asp.net linq-to-sql

我正在寻找一种更有效的方法来做到这一点......(见下文)......我必须执行七次,因为我有七篇专题文章。我正在提供的ID是页面ID(又名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. 获取该版本的信息。
  4. 我坚持使用这种表布局。

    感谢。

2 个答案:

答案 0 :(得分:2)

看看这个。这些都是内部联接,我不确定这是否完全符合您的要求?如果不让我知道。

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 :(得分:1)

大部分功劳归功于旁观者。

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();

您应该可以将此查询用作替代已有内容的替代品。