2013-05-06 3 views
0

리스트에서 문자열을 찾으려고합니다. 작동하지 않는 것 같고, 그냥 List<string>이라면 작동합니다. 아래 코드와 같은 의미입니다 ...Find Any string contains List <>

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

// 나는 Criterion 클래스의 문제를 생각합니까?

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

가 오류 :

여기
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; 
} 

나는 그것이 작동하도록 노력하고있어 코드 : 여기 내 수업 구조입니다

가 정의를 포함하지 않는이 '모든'과 최상의 확장 메서드 과부하 'System.Linq.Enumerable.Any<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)' has some invalid arguments

+0

"에리히는 슐츠".Contains (들)'무엇을 호출하는 '당신이 기대 : 여기

는 고정 코드? –

+0

이름이 존재하는지 확인하고 있습니다. –

+0

아마도 오타가 될 수 있지만 반환하는 List가 아니라 메서드에서 Any를 호출하려고합니다. LoadNames(). Any (...)를 수행해야합니다. – Murkaeus

답변

0

문자열을 단순히 작동하지 않는 Criterion 개체와 비교하려고 시도하고 있습니다.

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

아하 .... 그 수업은 .. 고맙습니다. –

2

.Contains(s)으로 전화 할 때 s은 문자열이 아니며입니다.3210. .Contains(s.propertyName)을 사용하십시오.

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

또한 LoadNames를 메서드로 사용하고 있으므로 먼저 실행해야합니다.

+0

정확히 .... 1+ ... –

관련 문제