我想创建一个包含结构列表的类。
我有以下代码:
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;
}
}
我看不出为什么我无法使用Lambda表达式,我得到的错误是:
Cannot convert lambda expression to type 'MyApp.MyData' because it is not a delegate type
答案 0 :(得分:4)
在您的情况下,Contains希望您传递MyData
,如果您想使用lambda进行比较,请使用Any
return data.Any(item => item.Description.Contains(desc));
答案 1 :(得分:0)
public bool Contains( string desc )
{
return data != null && data.Exists( item => item.Description.Contains( desc ) );
}
答案 2 :(得分:0)
原因是因为List<T>Contains
方法需要T
,而你给它一个lambda表达式,用=>
创建。
你能做的是:
data.Any(item => item.Description.Contains(desc));