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# Linq包括收集中的儿童_C#_Linq_Entity Framework_Include_Linq To Entities - Fatal编程技术网

C# Linq包括收集中的儿童

C# Linq包括收集中的儿童,c#,linq,entity-framework,include,linq-to-entities,C#,Linq,Entity Framework,Include,Linq To Entities,使用include方法不包括集合的子级 var abuseCaseQuery = from @event in context.AbuseEvents.Include("AbuseCase.AbuseCaseStatus.Status") select new { @event.SecurityGroupId, @event.AbuseCaseId, @event.AbuseCase.AbuseCaseStatus } ; var abuseC

使用include方法不包括集合的子级

var abuseCaseQuery =
  from @event in 
    context.AbuseEvents.Include("AbuseCase.AbuseCaseStatus.Status")
  select new
  {
    @event.SecurityGroupId,
    @event.AbuseCaseId,
    @event.AbuseCase.AbuseCaseStatus
  }
;

var abuseCases = abuseCaseQuery.ToList();
abuseCases
列表包含所有
AbuseCasesStatus
StatusId
,但
Status
对象为空

edmx:


如何填充
状态
导航属性?

在EF中,使用
选择
添加投影时,将忽略
包含

因此,您必须显式选择所需的所有数据:

select new
{
  @event.SecurityGroupId,
  @event.AbuseCaseId,
  @event.AbuseCase.AbuseCaseStatuses
    .Select( acs => new { AbuseCaseStatus = acs, Status = acs.Status } )
}

这确实会产生一个“平面”对象,因此您可能希望在以后修复对象图:

foreach( var abuseCase in abuseCases )
{
  foreach( var acs in abuseCase.AbuseCaseStatuses )
  {
    acs.AbuseCaseStatus.Status = acs.Status;
  }
}

我无法选择集合@event.AbuseCase.AbuseCaseStatus.Status。我试图使用select many功能,但遇到问题。
AbuseCaseStatus
表有一个
StatusId
列,因此它的
Status
导航属性应该是单个
Status
对象-不是这样吗?对不起,我不清楚。是的,
AbuseCaseStatus
对象有一个
Status
,但在我的选择中,
@event.AbuseCase.AbuseCaseStatus
是所有
AbuseCaseStatus
的集合,用于该
AbuseCase
我的错误-我没有仔细查看您的模型。我已经更新了我的答案。