0
을 인식하지 나는 다음과 같은 코드가 있습니다LINQ는 방법
public IList<Folder> GetArchivedFolders(int userId)
{
return _db.Folders.Where(f => f.IsArchived).Where(s =>
IsTopLevelArchivedFolder(s.FolderId)
).ToList();
}
private bool IsTopLevelArchivedFolder(int folderId)
{
var folder = GetFolder(folderId);
if (folder.ParentFolderIdWhileArchived > 0)
{
if (folder.ParentFolderId != null && !GetFolder((int) folder.ParentFolderId).IsArchived)
{
return true;
}
}
return false;
}
이 EF 내 코드를 실행할 수 없습니다 것 때문에 비록 작동하지 않는.
public System.Linq.Expressions.Expression<Func<Folder, bool>> IsTopLevelArchivedFolder()
{
var folder = this;
if (folder.ParentFolderIdWhileArchived > 0)
{
if (folder.ParentFolderId != null && !GetFolder((int) folder.ParentFolderId).IsArchived)
{
return true;
}
}
return false;
}
하지만 this
는 컨테이너 클래스가 아닌 Folder
객체에 해결된다
UPDATE :
다음 코드를이있는
public IList<Folder> GetArchivedFolders(int userId)
{
return _db.Folders.
Where(f => f.IsArchived).
Where(s => IsTopLevelArchivedFolder(s)).
ToList();
}
public bool IsTopLevelArchivedFolder(Folder folder)
{
return (folder.ParentFolderIdWhileArchived > 0) &&
(folder.ParentFolderId != null && !folder.IsArchived);
}
결과 엔티티
LINQ 메소드 '부울 IsTopLevelArchivedFolder (Nogginator.Repository를 인식하지 못한다. Models.Folder) '메서드 및이 메서드는 저장소 식으로 변환 할 수 없습니다.
감사 마티아스을! – SB2055