2011-02-10 3 views
0

숫자 목록이 있으며 여러 개의 또는 단일 숫자가 해당 목록에 있는지 확인해야합니다.목록에 문자열의 일부가 포함되어 있는지 테스트하는 방법

예를 들어 strSegment = "2,8" 문자열을 가진 list = new List<int> { 2, 3, 4, 5, ... } 목록이 있다고 가정합니다. list.Contains(strSegment)을 시도하면 명확하게 작동하지 않습니다. strSegment을 분리하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

내가 지금까지 가지고있는 코드 :

List<string> matchedSegs = ...; 
foreach (Common.Ticket tst in lstTST) 
{ 
    string segNums = tst.SegNums; 

    var result = segNums.Split(','); 
    foreach (string s in result) 
    { 
     if (matchedSegs.Contains(s)) 
     { 
      blnHKFound = true; 
      break; 
     } 
     else 
     { 
      strSegsNotFound += tst.strAirSegNums; 
      blnHKFound = false; 
     } 
    } 
} 
+0

것은 당신이 확장 수 : 여기

var result = strSegment.Split(',').Intersect(numbers); 

은보다 완벽한 예제 당신이 조금 예를 들어, 당신은 목록 내에서 숫자의 순서를 스캔하고 그 목록은 긴 문자열이나 목록 개체입니까? –

+0

예를 들어 2를 찾고 8을 찾고 싶습니까? –

+0

"2"가 "2,8"에 존재하지만 "2"가 목록 문자열에 있으면 찾고 있습니다 – Spooks

답변

2

글쎄, 당신 strNumber을 분할하지 않고 그것을 할,하지만 당신이 필요한 이유 당신이 정말로 설명하지 않았습니다. 그때 가장 간단한 방법을 Intersect을 분할되어 사용하여 생각 나는 당신을 위해 충분 있는지 확인하기 위해이 첫 번째 시도 권하고 싶습니다 :

string strSegment = "2,8"; 
List<string> numbers = new List<string> { "2", "3", "4", "5" }; 
var result = strSegment.Split(',').Intersect(numbers); 
foreach (string number in result) 
{ 
    Console.WriteLine("Found: " + number); 
} 
+0

linq :(내 문자열이 내 문자열 목록에있는 경우 true를 반환하려고합니다. – Spooks

+0

@Sppoks : LINQ가 아닌 이유는 무엇입니까? C# 2.0을 사용하고 있습니까? *는 아닙니다 *. –

+0

죄송합니다, 2.0 – Spooks

관련 문제