2013-05-06 62 views
0

我试图从列表中查找的字符串....好像它不工作,如果我刚才List<string>它的工作..这意味着,如下面的代码...找到任何字符串包含列表<>

List<string> c = new List<string>(); 
    c.Add("John Doe")); 
    c.Add("Erich Schulz")); 

//我觉得与标准类的问题? 这里是我的阶级结构:

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)); 

错误:

不包含定义“任意”和过载的最佳扩展方法'System.Linq.Enumerable.Any<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)' has some invalid arguments

+0

你有什么期望' “埃里希·舒尔茨”。载有(S)'打电话? – 2013-05-06 21:05:58

+0

我正在检查名称是否存在。 – 2013-05-06 21:06:51

+0

可能只是一个错字,但您试图在您的方法上调用Any而不是它返回的List上。你需要做LoadNames()。任何(...)。 – Murkaeus 2013-05-06 21:08:39

回答

0

您试图将一个字符串与一个Criterion对象进行比较,而这只是不起作用。

这里是固定的代码:

bool isExists = LoadNames.Any(criterion => String.Equals(criterion.PropertyName, "Erich Schulz", StringComparison.OrdinalIgnoreCase)); 
+0

啊哈....我想到了那个班..谢谢你们...... – 2013-05-06 21:08:25

2

当您拨打.Contains(s)时,s不是字符串,而是Criterion。使用.Contains(s.propertyName)

bool isExists = LoadNames().Any(s=> "Erich Schulz".Contains(s.PropertyName)); 

此外,您正在使用LoadNames作为方法,您需要先执行它。

+0

正好.... 1+ ... – 2013-05-06 21:09:31

相关问题