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

Sql 使用linq根据另一个表中的两个forigen键从第一个表中选择数据,sql,entity-framework,linq,foreign-keys,Sql,Entity Framework,Linq,Foreign Keys,我有两张桌子 tbl_新闻 tbl_新闻关系 在tbl_新闻关系中,我有两个外键 在第一个外键中,我保留了一个新闻ID 第二,我保留相关的新闻ID 我需要为一条新闻获取所有相关新闻 例如,news1有3条相关新闻 新闻3 新闻4 新闻6 如何使用linq实现此功能? 换句话说,我需要做以下工作: var query= select * from tbl_relation where FK_NewsID=1 foreach var item in query { select * from

我有两张桌子

tbl_新闻 tbl_新闻关系

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

我需要为一条新闻获取所有相关新闻

例如,news1有3条相关新闻

新闻3

新闻4

新闻6

如何使用linq实现此功能?

换句话说,我需要做以下工作:

var query= select * from tbl_relation where FK_NewsID=1
foreach var item in query
{
select * from tbl_news where Id=Fk_RelatedNewsID
}
您可以下载下面链接中的表格脚本
以下是使用LINQ执行此操作的几种方法。第一个使用子查询并
包含
,第二个使用
连接

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;
使用
联接进行第二次查询

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

如果您发布了一些带有预期结果的示例数据,这将非常有帮助。@Error_2646我发布了两个图像,也是预期结果,因为我发布了我的预期结果是新闻3、新闻4、新闻6,这些都是与新闻相关的新闻1无法看到您的图像,也不允许发布图像-发布可用、可读、可复制的文本。@user3250818确定,让我添加表的脚本