Лямбда “не может быть выведена из использования”

Спасибо за ответы, они тоже работают, но мне удалось сделать это по-другому, поэтому я публикую это здесь. Линия, которая делает трюк:

println $(By.className("LC20lb")).findAll {it.text().contains("ebay")}.size()
7
задан qui 9 February 2009 в 15:06
поделиться

3 ответа

Что это, Вы пытаетесь сделать? Например, 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);
    }
}

(Я не уверен, что вызывающей стороне намного более трудно сделать это самостоятельно, хотя),

7
ответ дан 6 December 2019 в 21:20
поделиться

Явное преобразование существует (Вы скучаете по броску?)

Существуют два Where методы, один в Системе. Linq. Счетный (который это использует), и один в Системе. Linq. Queryable (который Вы думаете, что он должен использовать, согласно тому типу возврата).

Необходимо выполнить одно из следующих действий:

  • измените тип возврата на IEnumerable<Image> - Я рекомендую это!
  • измените вызов метода Queryable.Where(dictionary.Values.AsQueryable(), exp)
  • звонить AsQueryable()
3
ответ дан 6 December 2019 в 21:20
поделиться

IDictionary<TKey, TValue> реализации IEnumerable<KeyValuePair<TKey,TValue>>, так Ваш Func должен посмотреть больше как Func<KeyValuePair<TKey,TValue>>.

2
ответ дан 6 December 2019 в 21:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: