특정 클래스의 메서드 이름 (키)과 설명 (값)을 포함하는 특수 문자열 사전 (string, string) (_RulesAndTheirDescriptions)이 있습니다. 나는 현재 다음 쿼리를 수행하여 키 또는 값의 일치 항목을 검색 한 다음 그리드에 바인딩합니다. 위대한 작품! 아마도 "단어"또는 "내 말을"일치하지만 "이" "내"와 "단어"로 검색하고자 할 때LINQ를 사용하여 문자열 목록과 일치하는 데이터 찾기
Dim Results = From v In _RulesAndTheirDescriptions _
Where v.Value.ToString().ToUpper().Contains(Me.txtSearchFor.Text.ToUpper()) _
Or v.Key.ToString().ToUpper().Contains(Me.txtSearchFor.Text.ToUpper()) _
Order By v.Key _
Select New With {.Rule = v.Key, .Description = v.Value.ToString()}
이 잘 작동합니다. 의미있는 단어와 구는 공백으로 구분됩니다. 구글과 빙처럼. 사용자가 값을 입력하면 해당 구가 인용되어야합니다. 다음 RegEx가 사용자가 찾고있는 단어/구문을 가져옵니다. 이제 새로운 향상된 목록과 작동하는 위 쿼리를 결합하는 데 어려움을 겪고 있습니다.
아래 코드를 사용하십시오. 나는 일을 시험하고 작동 시키려고 노력하고 있습니다.
Dim b As Match
b = Regex.Match(Me.txtSearchFor.Text, "(?<=(?:^|\s|,)"")[^""]*?(?="")|(?<=\s|^)(?!"")[\w\W]+?(?=\s|$)")
Dim sl As List(Of String) = New List(Of String)
If b.Success Then
sl.Add(b.Value.ToUpper())
Dim sMatch = b.NextMatch()
While sMatch IsNot Nothing AndAlso sMatch.Success
sl.Add(sMatch.Value.ToUpper())
sMatch = sMatch.NextMatch()
End While
End If
이 사이트의 다른 게시물마다 다음을 시도했지만 결과를 저장하지 않습니다. sl.ToString()이 값이 아닌 형식을 반환하기 때문에 용의자가 있습니까?
Dim Results = From v In _RulesAndTheirDescriptions _
Where v.Value.ToString().ToUpper().Contains(sl.ToString()) _
Order By v.Key _
Select New With {.Rule = v.Key, .Description = v.Value.ToString()}
이 모든 것이 잘못 될 경우 제발 저를 계몽하십시오. 그것이 쉬워야하는 것처럼 보입니다. 사전에
감사합니다, 케빈
가 작동 할 수처럼 소리,하지만 두 번째 줄을 원하는 경우 별개을 1에서 1과 동일 함 1 '같음'연산자의 양쪽에서 하나 이상의 범위 변수를 참조해야합니다. 범위 변수 'v'는 '같음'연산자의 한쪽에 나타나야하고 범위 변수 'y'는 다른 변수에 나타나야합니다. – Grandizer
봇은 나를 위해 작품을 좋아 - 나는 다음과 같은 작품 클래스 프로그램 { 정적 무효 메인 (문자열 []에 인수) { 목록 X = 새로운 목록 () { "AA를 .NET 3.5 .FOR 예를 사용하고 있습니다 ","BB ","CC "}; 목록 y = 새 목록 () {1, 2, 3}; var z = a에서 x로 결합 y에서 1을 1로 선택 선택 new {X = a, Y = b}; foreach (var u in z) Console.WriteLine ("{0} {1}", u.X, u.와이); } 을 제공합니다 AA 1 AA 2 AA 3 BB 1 BB 2 BB 3 CC 1 CC 2 CC 3 } –
josephj1989
버전 중 하나에 "적절한"값을 주장해도 OK 당신은 이것을 극복 할 수 있습니다. 양쪽에서 같은 값을 가짂 무언가를 사용하면이 값을 극복 할 수 있습니다. GetType()은 다음과 같습니다. var z = a에서 x에 y를 결합하십시오 .GetType()은 b.GetType()과 같습니다. X = a, Y = b}; – josephj1989