C#lambda表达式问题 - 如何使用以下SQL中的Lambda语句连接2个表?

时间:2011-06-06 17:50:34

标签: c# sql lambda expression

我有2个表,我想使用Lambda语句(不是Linq而是Lambda)加入它们。

这是我需要的查询:

SELECT
    c.*
FROM
    board as b
LEFT JOIN category as c ON
    b.cid = c.cid
WHERE
    b.bid = 1

我该怎么做?

如果 board 是数据集/变量,类别是另一个数据集/变量,那么我想要一些像 board.Join(category).Where(b => b.bid == c.cid)(我知道这是错的,但只是让你知道我在寻找什么,非常感谢你的帮助

2 个答案:

答案 0 :(得分:5)

如果您的意思是方法语法而不是linq的查询语法,那么您可以

var results = context.boards.Where(b => b.bid == 1)
                            .DefaultIfEmpty()
                            .Join(context.categories, 
                                  b => b.bid,
                                  c => c.cid,
                                  (b, c) => c);

答案 1 :(得分:2)

您可以使用组连接,如:

var qry = boards.GroupJoin(
    categories,
    b => b.CategoryID,
    c => c.CategoryID,
    (x, y) => new { Board = x, Categories = y })
    .SelectMany(
    x => x.Categories.DefaultIfEmpty(),
    (x, y) => new { Board = x.Board, Category = y });