C# 使用c访问LINQ查询中的父属性#
我想使用LINQ在C#中访问以下内容:C# 使用c访问LINQ查询中的父属性#,c#,linq,parent-child,C#,Linq,Parent Child,我想使用LINQ在C#中访问以下内容: var output = db.AuditLogDetails.Where(c => c.CostCenterID == id).Select(m => new History { CostCenterID=(int)m.CostCenterID, CostCenterOwner=c.Owner // c is not accesible }); 我无法分配CostCenterOwner=c.Owner其中子句只是根据谓词过滤
var output = db.AuditLogDetails.Where(c => c.CostCenterID == id).Select(m => new History
{
CostCenterID=(int)m.CostCenterID,
CostCenterOwner=c.Owner // c is not accesible
});
我无法分配
CostCenterOwner=c.Owner
其中
子句只是根据谓词过滤一系列值
,然后您在选择子句中选择值,并使用m
谓词
所以你可以这样试试
.Select(m => new History
{
CostCenterID=(int)m.CostCenterID,
CostCenterOwner= m.Owner
});
其中
子句只是基于谓词过滤一系列值
,然后您在选择带有m
谓词的
子句中选择值
所以你可以这样试试
.Select(m => new History
{
CostCenterID=(int)m.CostCenterID,
CostCenterOwner= m.Owner
});
请尝试m.Owner
c不可用,因为您有一个选项
。您能给我们显示ClassAuditLogDetails
,Owner
是AuditLogDetails
的属性吗?如果是,则where子句谓词中使用的c
表示单个AuditLogDetail
类,其范围仅限于where
子句。在执行Select
操作的同时,现在您可以在Select
中使用m
变量引用AuditLogDetail
类的单个对象。您应该使用c
而不是m
(c不在Select
的范围内)您应该使用join
亲爱的Prasad,正如下面的回答中所评论的,我重复一遍,所有者是c
而不是m
的财产。我必须使用SelectMany
?演示。。其中
指向与相同的对象。选择仅按位置过滤的
。其中不更改对象类型。因此,在这种情况下,m==c
试试m.Owner
c不可用,因为您有一个Select
。能否向我们显示ClassAuditLogDetails
,Owner
是AuditLogDetails
的属性?如果是,则where子句谓词中使用的c
表示单个AuditLogDetail
类,其范围仅限于where
子句。在执行Select
操作的同时,现在您可以在Select
中使用m
变量引用AuditLogDetail
类的单个对象。您应该使用c
而不是m
(c不在Select
的范围内)您应该使用join
亲爱的Prasad,正如下面的回答中所评论的,我重复一遍,所有者是c
而不是m
的财产。我必须使用SelectMany
?演示。。其中
指向与相同的对象。选择仅按位置过滤的
。其中不更改对象类型。因此,在这种情况下,m==c
这是一样的,Where
子句只是根据谓词过滤一系列值,然后您在Select
子句中使用m
predicate@Sujoy他(匿名)是对的c
等于m
。这是一个合理的假设。@Sujoy您尝试过建议的编辑吗?如果是,请就此提供反馈。我们已经非常清楚地解释了为什么m
是c
。您有一个选择
!如果它不工作,那是因为我们没有你的代码的全貌!所以请提供!假设是100%有效的c
=m
->正确。通常最好给我们提供您的AuditLogDetails
类。可能您需要使用选择多个
。为什么不给我们您的审核日志详细信息
类结构?这是一样的,其中
子句只是基于谓词过滤一系列值
,然后您在选择
子句中使用m
predicate@Sujoy他(匿名)是对的c
等于m
。这是一个合理的假设。@Sujoy您尝试过建议的编辑吗?如果是,请就此提供反馈。我们已经非常清楚地解释了为什么m
是c
。您有一个选择
!如果它不工作,那是因为我们没有你的代码的全貌!所以请提供!假设是100%有效的c
=m
->正确。通常最好给我们提供您的AuditLogDetails
类。可能您需要使用选择多个
。为什么不给我们您的审核日志详细信息
类结构?