我有以下嵌套的SQL语句,我将在C#中使用Lambda语句执行相同的操作我该怎么做?
SQL:
SELECT board.*, (SELECT COUNT(*) from discussion_topic
WHERE TopicBoardID=board.BoardID) as TopicCount
FROM `discussion_board` as board
这是我的2个表的结构
Table Name: discussion_board
Fields:
BoardID
BoardName
BoardCreatedBy
BoardCreatedDate
Table Name: discussion_topic
Fields:
TopicID
TopicName
TopicCreatedBy
TopicCreatedDate
TopicBoardID
只有2个简单的表,没有Forign键,
谢谢!
答案 0 :(得分:4)
这将为您提供一个新的匿名类型,其中包含董事会记录和讨论主题的数量。
var result = dataContext.Board.Select(x => new {x, Count = x.DiscussionTopics.Count()});
您可以在每条记录上使用board.DiscussionTopics.Count();
来获取计数。如果我正确理解你的问题,就不需要做上述事情
<强>更新强>
如果您没有外键,那么可以这样做
var result = dataContext.Board.Select(x => new {x, Count = dataContext.DiscussionTopics.Count(d => d.TopicBoardId == x.BoardID)});
答案 1 :(得分:1)
from b in DataContext.Boards
select new {
BoardId = b.BoardID,
BoardName = b.BoardName,
BoardCreatedBy = b.BoardCreatedBy,
BoardCreateDate = b.BoardCreateDate,
TopicCount = Discussions.Count(d => d.TopicBoardId == b.BoardID)
}