查找包含列表<>的任何字符串

时间:2013-05-06 21:03:29

标签: linq

我正在尝试从列表中找到一个字符串....看起来它不起作用,如果我只有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

2 个答案:

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