답변:
이미 내장 된 Contains () 메서드를 사용하십시오.
using System.Linq;
//...
string[] array = { "foo", "bar" };
if (array.Contains("foo")) {
//...
}
(new string[] { "foo", "bar" }).Contains("foo")
new[] { "foo", "bar" }.Contains(foo)
나는 이것이 오래되었다는 것을 알고 있지만, 나는 새로운 독자들이 제네릭과 확장 방법을 사용하여 이것을 수행하는 새로운 방법이 있다는 것을 알고 싶었다.
이 작업을 수행하는 방법에 대한 자세한 정보를 보려면 내 블로그 게시물 을 읽을 수 있지만 주요 아이디어는 다음과 같습니다.
이 확장 메서드를 코드에 추가하면 :
public static bool IsIn<T>(this T source, params T[] values)
{
return values.Contains(source);
}
다음과 같이 검색을 수행 할 수 있습니다.
string myStr = "str3";
bool found = myStr.IsIn("str1", "str2", "str3", "str4");
모든 유형에서 작동합니다 (좋은 equals 메소드를 작성하는 한). 확실히 모든 값 유형.
var xxx = csvData.Rows[0].ItemArray[0].IsIn(".00", "0.0", ".25", "0.5", ".5", ".50", ".75");
원하는 것은 첫 번째 열의 who datatable을 통해 값이 다음 문자열로 끝나지 않는지 확인하는 것입니다. 값이 다음 문자열로 끝나지 않으면 다음과 같은 문자열을 반환하고 싶습니다. 이 값을 실종 .00
나는이 일이 어떤 제안을 작동하지 않습니다 아직 내가 문자열을 반환하기 위해 방법을 변경 부울을 반환하지 않기 때문에 조금 복잡합니다 그러나 작동시킬 수없는 것 귀하의 예제를 사용하여, 예를 들면
public static bool EndWithValue(this string value, IEnumerable<string> values) { return values.Any(item => value.EndsWith(item)); }
Linq (S & G 용) :
var test = "This is the string I'm looking for";
var found = strArray.Any(x=>x == test);
또는 요구 사항에 따라
var found = strArray.Any(
x=>x.Equals(test, StringComparison.OrdinalIgnoreCase));
배열이 정렬되어 있습니까? 그렇다면 이진 검색을 할 수 있습니다. 다음은 .NET 구현입니다. 배열이 정렬 된 경우 이진 검색은 모든 반복 솔루션에 대한 성능을 향상시킵니다.
일반적으로 배열은 특정 개체가 컬렉션에 있는지 여부를 묻고 자 할 때 사용하기에 좋지 않은 데이터 구조입니다.
이 검색을 자주 실행 Dictionary<string, something>
하는 경우 배열보다는 을 사용하는 것이 좋습니다. 사전 검색은 O (1) (일정 시간)이고 배열 검색은 O (N)입니다 (배열 길이에 비례하는 시간 소요).
배열이 최대 200 개 항목 일지라도 이러한 검색을 많이 수행하면 사전이 더 빨라질 수 있습니다.
LINQ를 사용하여 배열을 반복 할 수도 있습니다. 또는 대리자를 검색하는 Find 메서드를 사용할 수 있습니다. 그러나 나는 find 메소드가 그냥 반복하는 것보다 조금 더 비싸다고 생각합니다.
이는 수동으로 어레이를 반복하는 것보다 빠릅니다.
static bool isStringInArray(string[] strArray, string key)
{
if (strArray.Contains(key))
return true;
return false;
}
Linq를 사용하고 싶지 않거나 단순히 사용할 수없는 경우 정적 Array.Exists(...);
함수를 사용할 수도 있습니다 .
https://msdn.microsoft.com/en-us/library/yw84x8be%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
var arr = new string[]{"bird","foo","cat","dog"};
var catInside = Array.Exists(
arr, // your Array
(s)=>{ return s == "cat"; } // the Predicate
);
Predicate가 true를 반환하면 catInside도 true가됩니다.