Создание лямбда-выражения - PullRequest
1 голос
/ 01 июля 2011

Я хочу создать класс, который оборачивает список структур.

У меня есть следующий код:

public struct MyData
{
    public int ID;
    public string Description;
}

public class MyClass
{
    private List<MyData> data;

    public bool Contains(string desc)
    {
        if (data != null)
        {
            return data.Contains(item => item.Description.Contains(desc));
        }

        return false;
    }        
}

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

Cannot convert lambda expression to type 'MyApp.MyData' because it is not a delegate type

Ответы [ 3 ]

4 голосов
/ 01 июля 2011

В вашем случае Содержит ожидает, что вы передадите ему MyData, если вы хотите использовать лямбду для сравнения, используйте Любой

return data.Any(item => item.Description.Contains(desc)); 
0 голосов
/ 01 июля 2011

Причина в том, что метод List<T>Contains ожидает T, тогда как вы дали ему лямбда-выражение, созданное с помощью =>.

Что вы могли бы сделать:

data.Any(item => item.Description.Contains(desc));
0 голосов
/ 01 июля 2011
public bool Contains( string desc )
{
    return data != null && data.Exists( item => item.Description.Contains( desc ) );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...