Как реализовать следующий вложенный SQL как лямбда-оператор - PullRequest
1 голос
/ 15 июня 2011

У меня есть следующий вложенный оператор SQL, и я буду делать то же самое с помощью оператора Lambda в C # Как мне это сделать?

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 простые таблицы без каких-либо чужих ключей,

Спасибо!

Ответы [ 2 ]

4 голосов
/ 15 июня 2011

Это даст вам новый анонимный тип, который будет иметь запись форума и количество тем для обсуждения.

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 голос
/ 15 июня 2011
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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...