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
C# 使用c访问LINQ查询中的父属性#_C#_Linq_Parent Child - Fatal编程技术网

C# 使用c访问LINQ查询中的父属性#

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其中子句只是根据谓词过滤

我想使用LINQC#中访问以下内容:

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不可用,因为您有一个
选项
。您能给我们显示Class
AuditLogDetails
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
。能否向我们显示Class
AuditLogDetails
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
类。可能您需要使用
选择多个
。为什么不给我们您的
审核日志详细信息
类结构?