【发布时间】:2019-08-22 11:49:30
【问题描述】:
我确实有一个表格“参考”和一个表格“文章”,其中一篇文章引用了其他文章。
我确实有一些简单的参考资料,例如: A -> B
SQL:
select ab.*
from Article a
inner join Reference ab on ab.ArticleFromId = a.Id
inner join Article b on b.Id = ab.ArticleToId
where a.ArticleNo = "1234"
C# LINQ:
_context.Reference
.Where(r => r.ArticleFromNavigation.ArticleNo.Equals("1234"));
我也有类似的参考链:A -> B -> C (假设一条链中最多只有 3 篇文章)
SQL:
select ab.ArticleFromId, bc.ArticleToId
from Article a
inner join Reference ab on ab.ArticleFromId = a.Id
inner join Article b on b.Id = ab.ArticleToId
inner join Reference bc on bc.ArticleFromId = b.Id
inner join Article c on c.Id = bc.ArticleToId
where a.ArticleNo = "1234"
这在 SQL 中很容易,因为结果只是与附加连接相乘,但我不知道如何在 LINQ 中编写。
我希望它是这样的(这是行不通的):
_context.Reference
.Where(r => r.ArticleFromNavigation.ArticleNo.Equals("1234"))
.Select(r => new Reference
{
ArticleFromNavigation = r.ArticleFromNavigation, //this is article "A"
ArticleToNavigation = r.ArticleToNavigation.ReferenceArticleToNavigations //this wont work as it's a iCollection
}).AsNoTrackable();
在这里,我想要“A -> C”的“参考”类型的新结果。 我想我必须在“新参考”部分之前包含/然后包含/加入/选择/selectmany(?)集合,但我不知道。
有什么办法可以存档吗?
【问题讨论】:
-
能否将示例数据添加到文章和参考表中?
标签: c# sql linq .net-core ef-core-2.1