2013-03-07 2 views
0

현재 사용자가 액세스 할 수있는 조직 목록을 목록 (List<string> userOrg)으로 설정했습니다. 목록 검색 <string> 와일드 카드 값 사용

목록의 내용

같은 것을 보면 : 다음이 목록을 사용하여있는 gridview를 채우는

34598 
34599 
23% 

을, 그래서의 gridview에 나에게 모든 정보를 제공합니다 : 어떻게 든주고 싶어 이제

34598 
34599 
everything that starts with: 23 

사용자가 해당 그리드 뷰를 검색 할 수 있습니다.

그들은 텍스트 상자에서 찾고자하는 조직에 넣고 있습니다. 단지 잘 채워지지만 어떻게 표시합니까? 그들이 액세스 할 수있는 조직입니까?

나는 사용자 조직 목록을 검색하여 해당 조직이 있는지 확인하지만 동시에 계정에 와일드 카드를 가져 오는 방법을 묻습니다. 그들은 "3백45퍼센트을 검색하는 경우 예를 들어

, 나는 만이 사람이기 때문에 사용자가 (내 userOrg 목록에있는)에 액세스 할 수

을 가지고, 그들에게 34598 및 34599,하지만 34566을 보여주고 싶은 나는 와일드 카드를 처리하는 방법을 잘이로 시작했지만 : 나는에 액세스 할 수 있으며 그 23로 시작하는 모든 여러 조직을 검색 할 텍스트 상자에 23 %에 넣으면 지금

List<string> org = new List<string>(); 
    List<string> userOrg = new List<string>(); 
    userOrg = (List<string>)Session["UserOrgs"] ; 

    if (txtOrg.Text == "") 
     Session["UserOrgs"] = userOrg;    
    else 
    { 
     foreach (string item in userOrg) 
     { 
      if(Regex.IsMatch(item, txtOrg.Text)) 
       org.Add(txtOrg.Text); 
     } 
     Session["UserOrgs"] = org; 
    } 
    ObjectDataSource1.Select(); 

를, 그것은 일치 그리고 if에 들어가지만, 만약 내가 텍스트 상자에 2 %를 넣으면, O가 내 userOrg 목록에 가지고있는 23 %와 일치하지 않으며 아무것도 반환하지 않는다.

아마도 LINQ로 쉽게 할 수있는 방법이 있습니까? 전에는 그다지하지 않았습니다.

+0

왜 "345 %"검색에 34566을 표시하고 싶지 않습니까? –

+2

사용자가 액세스 할 수 없으므로 –

+0

사용자가 액세스 할 수없는 경우 (34566) 왜 그리드 뷰에 채워야합니까? – publicgk

답변

0

일반적으로 표준 문자열 작업이 잘 수행 될 때 regexes를 사용하는 것이 좋지 않습니다. 필자는 후자를 이해하기 쉽기 때문에 유지 관리가 쉽다고 생각합니다. 정규 표현식에 당신의 일이있는 경우,

Bool isVisible = userOrgs.Any(delegate(string x) 
           { 
            String y = txtOrg.Text; 
            if (y.EndsWith("%")) 
            { 
             return x.StartsWith(y.TrimEnd('%')); 
            } 
            if (x.EndsWith("%")) 
            { 
             return y.StartsWith(x.Trim('%')); 
            } 
            return x == y; 
           } 

당신이 맞는 볼을 추가 부담이 경우, 내가 좋아하는 뭔가를 유혹 할 것입니다.