2017-12-18 33 views
-2

이 문자열 목록을 고려하십시오 :다른 목록의 포함 항목의 목록을 가져 오는 것은

Afghanistan, Albania, Algeria, El Salvador, 
Equatorial, Guinea, Eritrea, Estonia 
Ethiopia, Panama, Papua, Paraguay 
Peru, Togo, Trinidad & Tobago, Tunisia, Turkey 

을 내가 다른 목록이 있습니다

tan, ia, Tu 

내가 tan 또는 ia 또는 Tu을 포함 모든 국가하고자합니다. 루프없이 foreach없이이 작업을 수행 할 수 있습니까?

감사

+0

을 지금까지 시도 무엇입니까? 코드를 게시 할 수 있습니까? –

+0

두 번째 목록 및 공용체 결과에서 foreach를 사용하여이 작업을 수행 할 수 있습니다. 하지만 1 쿼리로 가능한지 알고 싶습니다. – Arian

+0

Try * Linq * (루프를 수행합니다) –

답변

2

가 그런 일을 시도;

var listA = new List<string> {"Afghanistan", "England"}; 
var listB = new List<string> {"afg"}; 
listA = listA.Where(x => listB.Any(k => x.IndexOf(k, StringComparison.OrdinalIgnoreCase) > -1)).ToList(); 

또한 대소 문자를 무시했습니다. 대/소문자를 구분하여 사용하려면 x.IndexOf(k, StringComparison.OrdinalIgnoreCase) 대신 x.IndexOf(k, StringComparison.Ordinal)을 사용하십시오.

+0

'StringComparison.OrdinalIgnoreCase' 옵션에주의하십시오. Por ** tu ** gal을 선택해서는 안되는 것으로 보일 수 있습니다. 'tu'가 아니라'tu') –

+0

피드백을 주셔서 감사합니다. 그러나 "tu"가 포함 된 Por * tugal *에 어떤 문제도 볼 수 없었습니다. – lucky

+0

당신은 대소 문자를 구분/대소 문자를 구분하여 넣었으므로, 저에게 +1하십시오. 제가 언급 한 문제는 "황갈색, ia, 화"가 들어있는 모든 국가를 원합니다. "라는 질문 상태입니다. 자, 제발, 제발,'Tu' (내 이해) 잘 의미 할 수 있습니다 * 대소 문자 * 검색 : ** 화 ** ** 열쇠, ** 화 ** 가치,하지만 Por ** 화 ** gal –

2

시도 당신을 위해 루프를 수행합니다 Linq에 :

List<string> source = new List<string>() { 
    "Afghanistan", "Albania", "Algeria", 
    }; 

    string[] filters = new[] {"tan", "ia", "Tu"}; 

    List<string> result = source 
    .Where(country => filters.Any(filter => country.Contains(filter))) 
    .ToList(); 
1

그래서 내부의 모든 필터를 확인하여 어디에서 문 간단한을 시도해보십시오

var countries = new List<string> 
    { 
     "Afghanistan", 
     "Albania", 
     "Algeria", 
     "El Salvador", 
     "Equatorial", 
     "Guinea", 
     "Eritrea", 
     "Estonia", 
     "Ethiopia", 
     "Panama", 
     "Papua", 
     "Paraguay", 
     "Peru", 
     "Togo", 
     "Trinidad & Tobago", 
     "Tunisia", 
     "Turkey" 
    }; 
    var filters = new List<string> {"tan", "ia", "Tu"}; 
    var result = countries.Where(country => filters.Any(filter => country.Contains(filter))); 
    foreach (var resultItem in result) 
    { 
     Console.WriteLine(resultItem); 
    } 
    Console.ReadKey(); 

는 또한이 바이올린에 그것을 확인 : https://dotnetfiddle.net/PdZvp4