我有以下数据对象:
Messages:
MessageID int,
Text string,
ParentMessageID int?
所以,记录如:
1 | “文字1”|空值 2 | “回复文字1”| 1 3 | “回复文字1回复”| 2
...
我需要计算一个帖子中有多少条消息。 LINQ怎么做?
答案 0 :(得分:2)
使用LINQ to Entities是不可能的:您需要编写公共表表达式来使用SQL执行递归查询。这些往往很慢。
假设您总是希望从层次结构中的同一级别开始计算,最简单的解决方案是为root id添加属性,就像这样。
Messages:
MessageID int,
Text string,
ParentMessageID int?
ThreadRootID int
给定线程中的所有消息的线程根相同。很容易计算具有相同ThreadRootId
的那些(并且将比递归查询更高效)。
答案 1 :(得分:1)
不确定是否可以使用LINQ for EF。您最好编写一个存储过程并将其映射到EF模型中的某个方法。