Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要解释LINQGroupJoin语法吗_Linq - Fatal编程技术网

需要解释LINQGroupJoin语法吗

需要解释LINQGroupJoin语法吗,linq,Linq,我在LINQ方面不是很强,但我正在努力熟悉GroupJoin 在下面的代码中,我试图理解 var result = authors.GroupJoin(books, author => author.AuthorId, book => book.AuthorId, (author, booksByAu

我在LINQ方面不是很强,但我正在努力熟悉
GroupJoin

在下面的代码中,我试图理解

var result = authors.GroupJoin(books,
                               author => author.AuthorId,
                               book => book.AuthorId,
                               (author, booksByAuthor) => 
                                new { Author = author.Name, Books = booksByAuthor });
从这个连接被重写成代码

var result = from a in authors
             join b in books on a.AuthorId equals b.AuthorId into booksByAuthor
             select new { Author = a.Name, Books = booksByAuthor };
我被
GroupJoin
中的语法弄糊涂了。我知道表格作者和书籍是联系在一起的,但接下来几行的意思是什么

例如,
author=>author.AuthorId
book=>book.AuthorId
的含义是什么?这两条线是不是相当于

on a.AuthorId equals b.AuthorId 
?

这句话的意思是什么:

(author, booksByAuthor) => new { Author = author.Name, Books = booksByAuthor } 

我可以阅读/理解Join into语句,但对
GroupJoin
有一些困难。谢谢。

您可能会感到困惑,因为这两个示例对同一事物使用了不同的别名。因此,让我们来解决这个问题:

var result = from a in authors
             join b in books on a.AuthorId equals b.AuthorId into booksByAuthor
             select new { Author = a.Name, Books = booksByAuthor };

希望有帮助。

可能。
var result =
    // authors join books 
    authors.GroupJoin(books,
    // on a.AuthorId equals b.AuthorId
    a => a.AuthorId, b => b.AuthorId,
    // select new { Author = a.Name, Books = booksByAuthor }
    (a, booksByAuthor) => new { Author = a.Name, Books = booksByAuthor }
);