繁体   English   中英

需要帮助将此LINQ表达式转换为LINQ语句

[英]Need help turning this LINQ expression into LINQ statement

我需要帮助将此linq表达式转换为linq语句。 SampleData.Publishers和SampleData.Books是我在Linq in Action一书中提供的简单集合。

这是表达式

var pubBooks =
            from pub in SampleData.Publishers
            join book in SampleData.Books on pub.Name equals book.Publisher.Name into pubbks
            select new {
                Publisher = pub.Name,
                Books =
                    from b in pubbks
                    select b.Title
            };

这是我到目前为止所做的,但我似乎无法获得匿名类型中定义的书籍集合。 谢谢你的时间。

var pubBooks = SampleData.Publishers.Join(SampleData.Books, pub => pub.Name, book => book.Publisher.Name, (pub, book) => new {
            Publisher=pub.Name,
            Books=??????
        });

非常简单的方法是使用Reflector 分析代码时,您将看到语句,而不是表达式。

转换它的另一个好方法是使用LinqPad

您可以使用GroupJoin

我没有测试这个,但它看起来像这样:

var pubBooks = SampleData.Publishers.GroupJoin(SampleData.Books, pub => pub.Name, book => book.Publisher.Name, (pub, bookColl) => new {
            Publisher = pub.Name,
            Books = bookColl.Select(b => b.Title)
        });

Resharper给了我这个:

var pubBooks =
            SampleData.Publishers.GroupJoin(
                SampleData.Books,
                pub => pub.Name,
                book => book.Publisher.Name,
                (pub, pubbks) => new
                                     {
                                         Publisher = pub.Name,
                                         Books =
                                     from b in pubbks
                                     select b.Title
                                     });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM