Спасибо за ответы, они тоже работают, но мне удалось сделать это по-другому, поэтому я публикую это здесь. Линия, которая делает трюк:
println $(By.className("LC20lb")).findAll {it.text().contains("ebay")}.size()
Что это, Вы пытаетесь сделать? Например, Single
возвратит экземпляр T
, не IQueryable<T>
(и для объектов, необходимо, вероятно, использовать IEnumerable<T>
так или иначе)...
Такое чувство, что Вы хотите:
public Image Find(Func<Image, bool> predicate)
{
return dictionary.Values.Single(predicate);
}
Конечно, Вы могли сделать это глобально как дополнительный метод через что-то как:
(редактирование включает Where
от редактирования вопроса)
static class DictionaryExtensions
{
public static TValue FindSingle<TKey, TValue>(
this IDictionary<TKey, TValue> dictionary,
Func<TValue, bool> predicate)
{
return dictionary.Values.Single(predicate);
}
public static IEnumerable<TValue> Find<TKey, TValue>(
this IDictionary<TKey, TValue> dictionary,
Func<TValue, bool> predicate)
{
return dictionary.Values.Where(predicate);
}
}
(Я не уверен, что вызывающей стороне намного более трудно сделать это самостоятельно, хотя),
Явное преобразование существует (Вы скучаете по броску?)
Существуют два Where
методы, один в Системе. Linq. Счетный (который это использует), и один в Системе. Linq. Queryable (который Вы думаете, что он должен использовать, согласно тому типу возврата).
Необходимо выполнить одно из следующих действий:
IEnumerable<Image>
- Я рекомендую это!Queryable.Where(dictionary.Values.AsQueryable(), exp)
AsQueryable()
IDictionary<TKey, TValue>
реализации IEnumerable<KeyValuePair<TKey,TValue>>
, так Ваш Func
должен посмотреть больше как Func<KeyValuePair<TKey,TValue>>
.