如何将以下嵌套SQL实现为Lambda语句

时间:2011-06-14 21:22:11

标签: c# mysql sql linq lambda

我有以下嵌套的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键,

谢谢!

2 个答案:

答案 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)
}
相关问题