나는 다음과 같은 모델이 있습니다방법 및 조건 RavenDB 쿼리에 LINQ의 WHERE 절에
public class Clip {
public Guid ClipId { get; set; }
public IList<StateChange> StateChanges { get; set; }
}
public class StateChange {
public string OldState { get; set; }
public string NewState { get; set; }
public DateTime ChangedAt { get; set; }
}
을 그리고 이것은 쿼리 까마귀 방법입니다
var now = DateTime.UtcNow;
var since = now.AddSeconds(60);
string state = "some state of interest";
using (var session = docStore.OpenSession()) {
RavenQueryStatistics stats;
session.Query<Clip>()
.Statistics(out stats)
.Where(
p => p.StateChanges.Any(a => (since > a.ChangedAt && a.NewState == state))
&& !p.StateChanges.Any(a => (a.OldState == state && now > a.ChangedAt)))
.ToArray();
return stats.TotalResults;
}
내가 얻을 싶어 (StateChange.CreatedAt
, since
및 NewState
이 "some state of interest"
일 때) (now
및 OldState
이 "some state of interest"
일 때)이 아닌 모든 Clip
레코드를 계산하십시오.).
위에서 사용 된 술어가 object에 대해 linq에서 작동하지만, linq에서 까마귀에게 작동하지 않는 것 같습니다 (예 : 예상 결과를 리턴하지 않음). 왼쪽에있는 표현식이 true로 평가되면 표현식 && !.p.StateChanges.Any....
이 평가되지 않기 때문입니다. 이 문제를 해결할 방법이 있습니까?
"작동하지 않음"이란 무엇을 의미합니까? 오류가 있습니까? –
아니요, 예상 결과를 반환하지 않음을 의미합니다. 즉, 오른쪽 표현식을 무시합니다. –
어떻게 무시할 것입니까? 첫 번째 조건이 참이면 전체 조건 결과를 얻기 위해 올바른 조건을 평가해야합니다. –