我正在尝试从列表中找到一个字符串....看起来它不起作用,如果我只有List<string>
它确实有效..意思就像下面的代码......
List<string> c = new List<string>();
c.Add("John Doe"));
c.Add("Erich Schulz"));
//我认为Criterion类存在问题? 这是我的班级结构:
public class Criterion
{
public Criterion(String propertyName, object value)
{
this.PropertyName = propertyName;
this.Value = value;
}
}
//here is the method...
public static List<Criterion> LoadNames()
{
List<Criterion> c = new List<Criterion>();
c.Add(new Criterion("Name1", "John Doe"));
c.Add(new Criterion("Name2", "Erich Schulz"));
return c;
}
这是我正在尝试使其工作的代码:
bool isExists = LoadNames.Any(s=> "Erich Schulz".Contains(s));
错误:
不包含“Any”的定义和最佳扩展方法重载'System.Linq.Enumerable.Any<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)' has some invalid arguments
答案 0 :(得分:2)
当您致电.Contains(s)
时,s
不是字符串,而是Criterion
。使用.Contains(s.propertyName)
。
bool isExists = LoadNames().Any(s=> "Erich Schulz".Contains(s.PropertyName));
此外,您使用LoadNames作为方法,您需要先执行它。
答案 1 :(得分:0)
您正在尝试将字符串与Criterion对象进行比较,而这只是不起作用。
这是固定代码:
bool isExists = LoadNames.Any(criterion => String.Equals(criterion.PropertyName, "Erich Schulz", StringComparison.OrdinalIgnoreCase));