동안 작업을 수행 :내가 이런 컬렉션이 열거
(from query in queries
where _metadata.ContainsKey(query.Value)
select query).ToList().ForEach(result=>_metadata[result.Value].AddQuery(result));
쿼리 열거와 일치하는 AddQuery()를 호출하여 더 간단하게 만들 수 있을지 궁금합니다. 쿼리는 변경할 수 없으므로 중단해서는 안됩니다. 다음과 같은 내용이어야합니다. 당신은 , 어디 등 부작용이있는 선택하는 람다를 제공 할 수 있습니다
foreach (var query = queries.Where(q => _metadata.ContainsKey(query.Value)))
{
_metadata[query.Value].AddQuery(query)
}
-하지만 일반적으로 좋은 생각입니다;
from query in queries
where _metadata.ContainsKey(query.Value)
//do something like _metadata[query.Value].AddQuery(query)
AddQuery() 메소드는 사전의 키와는 아무 상관이 없습니다 고려. 쿼리 (사전 값) 컬렉션에 쿼리를 추가하기 만하면됩니다. 여전히 부작용이 있습니까? –
@Ufuk :'AddQuery'를 호출해도'ContainsKey'에 영향을 미치지 않는다면 좋습니다. 여전히 부작용이지만 그게 당신이 원하는 * 것입니다. 중요한 것은 쿼리를 방해하지 않는 부작용입니다. –