새 params를 메서드에 추가 할 수없고 DataQuery의 논리를 변경할 수없는 상황에 있습니다. 그래서이 메서드와 비슷한 구조로 메서드의 내용을 변경할 수 있습니다 및linq의 where 절을 가로 채고 오버라이드
IEnumerable<T> Get<T>(DataQuery<T> query) {
var collection = repo;
return query.Apply(repo).ToList();
}
내 문제는 내가 날 내 팀, 또는 내 회사에 할당 된 TS를 검색하거나 지원을 추가하려면,하지만 난 "저를 어떤 상황에 액세스 할 수 없다는 것입니다 T.의 특성 "호출 지점에서 - 메서드의 UserContext에서 사용할 수 있습니다.
DataQuery<T>.Apply()
을 사용하면 T.caseId <= 4
과 같은 Ts 속성을 쿼리 할 수 있으며 사례 1 ~ 4의 목록을 반환합니다. source.Where(t => t.caseId <= 4)
내 아이디어로 번역되는이 .Where(t => t.IsMineQuery == true)
또는 .Where(t => t.IsMyTeamQuery == true)
에 전화 차단
bool IsMineQuery
bool IsMyTeamQuery
bool IsMyCompanyQuery
다음을 T와 .Where(t => t.UserId == UserContext.UserId)
또는 .Where(t => UserContext.TeamIds.Contains(t.TeamId))
로 다시 다음 필드를 추가하는 것입니다하지만 난 방법을 전혀 생각이 없다 전화를 가로 챈다.
어떻게해야합니까?
질문을 완전히 이해하지 못했지만 'IsMineQuery {get UserId == UserContext.UserId}'충분하지 않아도됩니까? – Heinzi
@Heinzi 아니요.'IsMyQuery' getter에서'UserContext'를 사용할 수 없기 때문입니다. – dasblinkenlight
'DataQuery '이란 무엇입니까? 당신이 그것을 제어 할 수 있습니까? 어떻게 구성하고 쿼리합니까? –