확인

2010-02-23 3 views
4

나는 사전확인

private readonly Dictionary<int, BinaryAssetExtensionDto> _identityMap; 

을 그리고 나는 같은 것을 할 싶습니다 : 앞의 코드는 아무튼 때문에

if(_identityMap.Values.Contains(x => x.extension == extension))... 

이 가능 일하지 마라.

는 지금은 이런 식으로하고 있어요 : 해당 조건이 충족되지 않으면이 null을 반환 할 수 있습니다

var result = _identityMap.Values.ToList().Find(x => x.extension == extension); 
if (result != null) return result; 

답변

7
using System.Linq; 
... 
_identityMap.Values.Any(x=>x.extension==extension) 
+0

아무 것도 발견되지 않으면 null을 반환합니까? –

+0

@Lieven 콜렉션의 요소가 술어와 만나는 경우 부울을 반환합니다. –

+0

오, 좋아, 내가 필요한 것. –

3
return _identityMap.Values.FirstOrDefault(x => x.extension == extension); 

. 이것은 당신이 당신이 기본값 제공 할 수 원하는 수없는 경우 :

return _identityMap.Values.FirstOrDefault(x => x.extension == extension) ?? 
    new BinaryAssetExtensionDto(); 
1

내가 생각을 그 중 하나를 당신을 위해 일하는 것이 다음

if (_identityMap.Values.Where(x => x.extension == extension).Count() > 0) { /*...*/ } 

if (_identityMap.Values.FirstOrDefault(x => x.extension == extension) != null) { /*...*/ } 

아마 다른 가능한 대안도있다