检查Dictionary的值是否包含具有特定字段值的元素

时间:2010-02-23 08:47:25

标签: c# linq

我有一个词典

private readonly Dictionary<int, BinaryAssetExtensionDto> _identityMap;

我想做这样的事情:

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

这是可能的,因为以前的代码不起作用。

现在我这样做:

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

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

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

如果不满足条件,则可能返回null。如果这不是您想要的,您可以提供默认值:

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

答案 2 :(得分:1)

我相信以下任何一种都适合你:

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

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

也可能有其他可能的替代方案