개체 집합을 반환하는 IQueryable (PartHistories)이 있습니다. 이 질문 (rc는 목록)을 변경하는 Phase라는 열거 형이 있습니다."linq where"속성을 확인하지 못합니다?
var query = this.PartHistories;
if (Phase.Repair == _Phase)
{
query = query.Where(ph => ph.RemovedInRepair == false);
}
else
{
query = query.Where(ph => ph.PartPhaseID != (int)Phase.Repair);
}
rc.AddRange(query
.ToList());
이것은 작동합니다.
이제 문제의 객체 (PartHistory)에는 PartPhaseID를 위상으로 변환하는 PartPhase 속성이 있습니다. 이 코드는, 그러나, (변화가 Phase.Repair 라인에) 작동하지 않습니다.
var query = this.PartHistories;
if (Phase.Repair == _Phase)
{
query = query.Where(ph => ph.RemovedInRepair == false);
}
else
{
query = query.Where(ph => ph.PartPhase != Phase.Repair);
}
rc.AddRange(query
.ToList());
을 AddRange에서 예외가 "회원 'PartPhase'는 지원되지 않습니다됩니다
을 마지막으로, 다음 코드는 작동하지만,이 경우, 어디 목록의 확장이며 (내가 생각하는)이 모든 PartHistories가 수집 된 후 적용
if(Phase.Repair == _Phase)
{
rc.AddRange(this.PartHistories.ToList()
.Where(ph => ph.RemovedInRepair == false));
}
else
{
rc.AddRange(this.PartHistories.ToList()
.Where(ph => ph.PartPhase != Phase.Repair));
.ToList() 다음에 .where가 실행되는 마지막 코드 샘플에서 올바른지 확인하십시오. LINQ (개체, IQueryable보다는 IEnumerable) 및 속성에 문제가 없었습니다. 그래서 문제는 아직 나에게 뛰어 오르는 것이 아닙니다. –
Phase 및 PartPhase 클래스의 모습에 대해 좀 더 자세히 설명해 줄 수 있습니다. PartPhase는 Repair와 같은 유형입니까? –
단계는 단지 열거 형입니다. PartPhase는 Phase로 캐스트 된 int를 반환하는 PartHistory의 속성입니다. 따라서 PartPhase는 Repair와 동일한 유형입니다. 둘 다 위상입니다. –