使用linq基于另一个表中的两个forigen键从第一个表中选择数据

时间:2018-05-31 20:37:16

标签: sql entity-framework linq foreign-keys

我有两张桌子

tbl_news tbl_NewsRelation

在tbl_NewsRelation中我有两个外键 在第一个外键我保留一个新闻ID 第二,我保留了相关的新闻ID

tbl_news

tbl_NewsRelation

我需要获取有关新闻的所有相关新闻

例如news1有3个相关新闻

news3

新闻4

news6

...............................

怎样才能使用linq?

换句话说,我需要做到以下几点:

var query= select * from tbl_relation where FK_NewsID=1
foreach var item in query
{
select * from tbl_news where Id=Fk_RelatedNewsID
}

您可以在下面的链接中下载表格的脚本 script

1 个答案:

答案 0 :(得分:0)

使用LINQ可以通过以下几种方法完成此操作。第一个使用子查询Contains,第二个使用join

var relatedNewsIDs = from n in tbl_NewsRelation
                     where n.newsID == "news1"
                     select n.relatedNewsID;

var ans = from n in tbl_news
          where relatedNewsIDs.Contains(n.newsID)
          select n;

使用join进行第二次查询:

var ans2 = from rn in tbl_NewsRelation
           where rn.newsID == "news1"
           join n in tbl_news on rn.relatedNewsID equals n.newsID
           select n;