繁体   English   中英

更高效的Linq-to-SQL查询

[英]More efficient Linq-to-SQL query

我正在寻找一种更有效的方法来执行此操作(请参阅下文),因为我有七篇专题文章,因此我必须执行七次。 我要提供的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. 获取该版本的信息。

我坚持使用这种表格布局。

谢谢。

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

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 };

我还可以将新选择更改为您需要的字段。

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

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

您应该可以使用此查询代替现有查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM