c# - Linq连接两个相同类型的对象

标签 c# asp.net linq join

我怎样才能让它发挥作用?我不断收到错误消息,指出 r 在当前上下文(我放置 ** 的位置)中不存在。

                    var query = (
                        from p in PrerequisitesList
                        join r in RequirementStatus
                        on p.ID equals r.ID
                        into temp
                        from r in temp.DefaultIfEmpty(new RequirementStatus(p.ID, p.Name, p.Description, **r.Fulfilled**))
                        select new
                        {
                            p.ID
                            ,p.Name
                            ,p.Description
                            ,r.Fulfilled
                        });

两种类型完全相同,因此各个值都会被覆盖。

最佳答案

DefaultIfEmpty 方法本质上提供了一个左外连接。这意味着如果连接没有找到正确顺序的匹配项,它就是您的后备方案。如果正确的项目为 null,我们就无法真正访问它,对吧?

你必须想出别的东西,因为你犯了逻辑错误。

也许你可以通过实际提供一个默认值来解决它?

像这样:

temp.DefaultIfEmpty(new RequirementStatus(p.ID, p.Name, p.Description, false))

此外,右侧列表的名称与后面使用的 RequirementStatus 类型相同,这使得您的示例无法编译。但这可能是一个错字。

关于c# - Linq连接两个相同类型的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19228664/

相关文章:

c# - 消除 LINQ to Entities 中的循环

c# - 无法将类型 System.Collections.Generic.IEnumerable 隐式转换为 System.Collections.Generic.List

c# - 如何使用用户键入的关联显示文本获取 ComboBox 的值成员?

javascript - 将输入的换行符转换为 <br/> 标签

c# - ASP.NET docker-compose 应用程序没有出现在分配的端口上

c# - Entity Framework ——底层SQL语句

C# 将 View 状态转换为 bool 数组

c# - JsonValue 和 JsonObject 有什么区别?

c# - 如何以编程方式多次统一放置相同的 Sprite ?

asp.net - 在已创建的 DataTable 对象上使用 SELECT DISTINCT?