2014-05-09 7 views
1

특정 텍스트를 찾는 특정 텍스트를 찾는 형식의 요소가있는 목록에서 username + datetime이고 텍스트의 일부가 목록의 요소와 일치하는 경우 다음, 전체 요소는 이제이 사용자 이름 또는 요소의 무언가의 일부 일치하는 경우 요소를 삭제하는 방법을하고자하는 c# List특정 텍스트가 포함되어있는 경우 목록에서 요소 제거

string active_user = model.UserName.ToString(); 
string datetime = "(" + DateTime.Now + ")"; 
List<string> activeUsers = new List<string>(); 

if (activeUsers.Any(str => str.Contains(active_user))) 
{ 
    //do nothing 
} 
else 
{ 
    activeUsers.Add(active_user+datetime); 
} 

에 추가

방법 목록에서 제거되어야한다 like

,
if (activeUsers.Contains(active_user)) 
{ 
    activeUsers.Remove(active_user); 
} 

답변

2

다른 답변은 정확한 반면, 일치하는 항목은 모두 삭제된다는 점에 유의해야합니다. 당신은 테스트하는 정규 표현식을 사용할 수 있습니다

예를 들어, active_user = "John" 등 "존", "John123", "OtherJohn", 제거, 또는 사용자 이름에 괄호가없는 경우, 다음과 같이 테스트를 수행

string comp = active_user + "(";  // The (is the start of the date part 
activeUsers.RemoveAll(u => u.StartsWith(comp)); 

또한 대소 문자를 구분합니다.

+0

내 사용법에 완벽하게 보입니다. – DoIt

+0

더 많은 조건을 확인하고 싶다면 어떻게해야합니까? – Si8

+0

@ Si8 && 만 사용하십시오. 'activeUsers.RemoveAll (u => u.StartsWith (comp) && somethingelse && somethingelse2); ' –

1
var user = activeUsers.FirstOrDefault(au => au.Contains(active_user); 

if(user != null) 
    activeUsers.Remove(user); 

만 다른 첫 번째 일치, 제거하고자하는 경우 :

var users = activeUsers.Where(au => au.Contains(active_user); 

foreach(var user in users) 
    activeUsers.Remove(user); 

이상 단순히에서 removeAll 방법 에릭과 대답을.

4

당신은 일치 active_user의 텍스트를 포함 activeUser의 모든 요소를 ​​제거합니다

activeUsers.RemoveAll(u => u.Contains(active_user)); 

과 같은 작업을 수행 할 수 있습니다.

관련 문제