2011-07-01 3 views
2

내 요구 사항은 문자열의 값과 문자열의 값을 비교하는 것입니다.들어있는 분할 문자열과 비교 - LINQ

코드 :

string Names = "Prabha,Karan"; 
     List<string> Presenter = new List<string> { "Prabha", "Joe", "Hukm" }; 

bool Presented = Presenter.Contains(Names.Split(',')); 

위의 코드에서 오류가 발생하고 여기에 내가 이름이 (발표자는 이름의 splited 값이) 발표자로 표시됩니다 찾아야합니다.

+0

목록이 포함되어 있지만 한 개만 검사하므로이 기능이 작동하지 않는 이유를 알 수 있습니다. ub1k의 대답은 좋은 해결책처럼 보입니다 – Manatherin

+0

정확하게 말하십시오 : Presenter 또는 Any에 존재하는 이름의 모든 요소에 대해 'true'를 받으시겠습니까? 그래서 위의 코드 ... 만약 그것이 작동한다면 true 또는 false를 반환해야합니까? – ub1k

답변

4

아래처럼 할 수있는 :

var splitNames = Names.Split(','); 
bool Presented = Presenter.Any(p => splitNames.Contains(p)); 

편집 :

일치하는 그냥 할 당신이 관심이 있다면 무엇인가 :

var matches = Presenter.Where(p => splitNames.Contains(p)) 
+0

정말 작동합니까? – sll

+0

Presenter에서 모든 요소 인 Names의 모든 요소에 Presented == true를 반환합니다. 예, 작동합니다. 나는 항상 게시/테스트 코드를 게시합니다. – ub1k

+0

그냥 단위 테스트를했는데 작동하지 않습니다 (present = Presenter.Any()) (EDIT를 추가하기 전에 질문했기 때문에 나중에 EDIT로 게시 한 코드는 사용하지 않았습니다) – sll

0
string names = "Prabha,Karan"; 
List<string> presenter = new List<string> { "Prabha", "Joe", "Hukm" }; 
IEnumerable<string> namesList = names.Split(',').Select(x => x.Trim()); 
var list = presenter.Intersect(namesList); 
bool presented = namesList.Count() == list.Count()); 

단위를 사례를 다룰 수있는 테스트 :