LINQ 쿼리에서 Contains(string)를 Contains(string[])로 바꾸는 방법
LINQ에서 Contains() 메서드는 다음을 수행할 수 있습니다. 컬렉션에 특정 요소가 포함되어 있는지 확인하는 데 사용됩니다. 기본적으로 Contains() 메서드는 단일 문자열 매개 변수를 사용하지만 문자열 배열과 비교해야 하는 경우 어떻게 해야 합니까?
질문:
다음과 같은 LINQ 쿼리:
from xx in table where xx.uid.ToString().Contains(string[]) select xx
string[] 배열의 값은 숫자입니다(예: 1, 45, 20, 10). Contains() 메서드를 사용하여 xx.uid 속성(숫자)이 배열에 있는지 확인하고 싶습니다. 어떻게 해야 합니까?
답변:
xx.uid를 문자열 배열과 비교하려면 Contains(string) 메서드를 직접 사용할 수 없습니다. 대신 string[] 배열을 Contains() 메서드를 지원하는 컬렉션으로 변환해야 합니다. 다음은 두 가지 접근 방식입니다.
string[] 배열을 List
var uids = new List<string>(stringArray); var selected = table.Where(t => uids.Contains(t.uid.ToString()));
uid도 정수인 경우 string[] 배열을 List
var uids = stringArray.Select(int.Parse).ToList(); var selected = table.Where(t => uids.Contains(t.uid));
확장 메서드(선택 사항):
문자열에 대한 확장 메서드를 만들 수도 있습니다. ] 유형을 사용하여 문자열 인수를 취하는 Contains() 메소드를 제공합니다.
public static bool Contains(this string[] arr, string value) { return arr.Any(s => s == value); }
이 확장 메소드를 사용하면 string[] 배열의 Contains() 메서드:
var selected = table.Where(t => stringArray.Contains(t.uid.ToString()));
위 내용은 LINQ 쿼리에서 문자열 배열과 함께 Contains()를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!