Как мне написать метод расширения на ConcurrentDictionary - PullRequest
0 голосов
/ 21 июля 2011

У меня есть объект ConcurrentDictionary, определенный как ConcurrentDictionary<int, DirtyFlag><int, DirtyFlag>, где флаг dirty - это Enum со значениями Dirty / Clean.

Я пытаюсь написать метод расширения, чтобы получить только грязные объекты. Те объекты, для которых DirtyFlag имеет значение Dirty.

Я пытался использовать это, но выдает ошибку:

public static ConcurrentDictionary<int, DirtyFlag> GetDirtyRoutes(this ConcurrentDictionary<int, DirtyFlag> wholeDictionary)
{

    return wholeDictionary.SelectMany(a => a.Value == DirtyFlag.Dirty);

}

Это сообщение об ошибке, которое я получаю:

The type arguments for method 'System.Linq.Enumerable.SelectMany<TSource,TResult>
(System.Collections.Generic.IEnumerable<TSource>, 
System.Func<TSource,System.Collections.Generic.IEnumerable<TResult>>)' cannot 
be inferred from the usage. Try specifying the type arguments explicitly.

Любая помощь?

1 Ответ

2 голосов
/ 21 июля 2011
public static ConcurrentDictionary<int, DirtyFlag> GetDirtyRoutes(this ConcurrentDictionary<int, DirtyFlag> wholeDictionary)
{
    return new ConcurrentDictionary<int, DirtyFlag>(
        wholeDictionary.Where(a => a.Value == DirtyFlag.Dirty)
    );
}
...