c# - 从 LINQ 查询语法转换为方法语法

标签 c# linq

我有以下加入:

var simpleJoin = from b in books
                 join p in publishers on b.PublisherName equals p.Name
                 where p.Id == 1
                 select b;

使用方法语法的等效项是什么?我被过滤器绊倒了:

simpleJoin = books.Join(publishers, p => p.PublisherName, b => b.Name, (b, p) => b).Where(*can't access publishers here*)

我可以不使用书籍作为我的源收藏吗?我想知道如果我们有多个连接,我们如何管理过滤。

最佳答案

您需要在 resultSelector 中包含 bp。例如,使用匿名类型的对象:

simpleJoin = books.Join(publishers, p => p.PublisherName, b => b.Name, 
        (b, p) => new { b = b, p = p })
    .Where(result => result.p.Id == 1)
    .Select(result => result.b);

关于c# - 从 LINQ 查询语法转换为方法语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419931/

相关文章:

c# - xml 解析字符引用 : invalid xmlChar value 0

c# - Where 返回 0 行时的 LINQ 查询空异常

c# - 为什么使用 AsQueryable() 而不是 List()?

c# - LINQ 中的展平列表

c# - 我的屏幕保护程序正在停止屏幕暂停,但我不希望它停止

c# - 什么是 ServiceBase.ServiceHandle?有什么例子吗?

c# - 什么是支持 LINQ 的 "mobile".NET 数据库?

c# - 在这种情况下如何使用 Regex.Replace?

c# - 无法合并 EF 中的两个函数结果

c# - Linq to XML 问题