2013-09-21 5 views
0

:예를 들어

public void do1(string str) 
{ 
    List<string> list = new List<string>(); 
    foreach (string item in list) 
    { 
     if (item == str) 
     { 
      /// 
     } 
    } 
} 

에 비교 :

public void do2(string str) 
{ 
    List<string> list = new List<string>(); 
    var item = list.Where(x => x == str); 
    /// 
} 

가장 효과적인 무엇입니까 컬렉션 검색을 구현하는 방법은?

+0

. 각각을 사용하여 구현됩니다. 그들은 동등하다 –

답변

1

"가장 효과적"이라고 정의 하시겠습니까?

Linq (list.Where())를 사용하면 더 간결하고 논란의 여지가없는 유지 보수가 가능한 코드를 얻을 수 있으며, 고급 작업을 사용함에 따라 프로그램 뒤의 인간 논리를 더 쉽게 볼 수 있습니다.

foreach를 사용하면 조금만 성과급을 가지고, 당신은 상태 머신을 구현하는 등 Linq를 설명 할 수있는 것보다 더 복잡한 작업을 수행하는 경우 더 많은 유연성을 제공 않습니다.

간단한 단일 검색어로 검색하려면 .Where을 사용하면됩니다. foreach을 사용할 이유가 없습니다.

0

루프가 단순한 foreach 루프보다 빠릅니다. 목록에 특별한 속성이없는 경우 목록을 통한 선형 검색보다 더 나은 성능을 얻을 수 없습니다. 이 문장의 경우 많은으로 foreach는 방법을 쓰기보다 잘 쓰여진 .Single 검색을 읽을 훨씬 더 간결하고 만족 때문에

Linq의의 .Where.Single (그리고 그들의 사촌)의 장점은 간단하다.

Model object = modelsList.Single(model => 
     model != null && 
     model.Property != null && 
     model.Property.Property == "wanted" 
); 

Model object = null; 
foreach (var model in modelsList) { 
    if (model != null && model.Property != null && model.Property.Property == "wanted") { 
     object = model; 
    } 
} 

상상해 당신은 생각이 조금 더 나은를 참조하십시오.

실제로 성능 차이는 무시할 수 있지만 foreach은 최악의 경우 속도가 더 빠를 것이라고 말하는 것이 안전합니다.