이 코드는 작동하지만 사전 ignored
을 이중 참조하기 때문에 비효율적입니다. 더 효율적으로 만들기 위해 사전 TryGetValue()
메서드를 LINQ 문에서 어떻게 사용할 수 있습니까?LINQ에서 TryGetValue() 사용?
IDictionary<int, DateTime> records = ...
IDictionary<int, ISet<DateTime>> ignored = ...
var result = from r in records
where !ignored.ContainsKey(r.Key) ||
!ignored[r.Key].Contains(r.Value)
select r;
문제는 out 매개 변수에 사용할 LINQ 문 내에서 변수를 선언하는 방법을 모르겠다는 것입니다.
이것은 작동합니다. 변수가 여전히 범위에있는 동안 변수를 평가하고 병렬 LINQ와 함께 사용하지 않으려 고합니다. –
@Joe, 정확하게 ... 예측할 수없는 효과가 있습니다. –