2013-10-31 2 views
0

C#의 IEnumerable<SelectListItem> 항목의 값/텍스트 조합을 자르려고합니다. 아래 코드를 사용하여이 작업을 수행 할 수 있지만 Linq를 사용하여 수행 할 수 있는지 궁금해하고 있었습니까?Linq을 사용하여 SelectItemList의 값과 텍스트 자르기

IEnumerable<SelectListItem> list = //function that fills the IEnumerable<SelectListItem>; 

foreach (SelectListItem item in list) 
{ 
    item.Value = item.Value.Trim(); 
    item.Text = item.Text.Trim(); 
} 
+0

사용 list.ToList()를 ForEach (I => {// 당신의 물건을 할}) – Dilshod

+0

@Dilshod'IEnumerable을 '가 더'ForEach' 방법. – Servy

+0

목록을 바인딩하는 순간에 값을 다듬을 수 있습니다. – melancia

답변

4

LINQ는 개의 쿼리을 정의하도록 설계되었습니다. 당신이 가지고있는 것은 질의가 아닙니다. 그것은 항목을 수정/변경하고 있습니다. 따라서 LINQ는이 작업을 수행하는 데 효과적인 도구가 아니며, foreach 루프가 구현됩니다 (구현은 훌륭합니다). LINQ를 사용하려면 기존 항목을 수정하는 대신 완전히 새로운 항목을 만드는 것이 좋습니다. 그것은 당신이 정말로하고 싶었던 것일 수도 아닐 수도 있습니다. 이 경우, 그것은하지 않을 것이다 :.

list.Select(item => new SelectListItem() 
{ 
    Value = item.Value.Trim(), 
    Text = item.Text.Trim(), 
}); 
+1

+1 설명과 함께;) –

+0

고마워! 그건 의미가 있습니다. 내 Linq 기술을 파까지 끌어들이려고 노력하고 있는데, 많은 도움이됩니다. – shenn

1
var result = list.Select(x => new SelectListItem { 
    Value = x.Value.Trim(), 
    Text = x.Text.Trim() 
    }); 

나는이 트릭을 할 전망이다. 왜 네가 일하지 않았 니?

+0

감사합니다. 그것은, 그냥 내 Linq 기술을 향상 시키려고 노력 했어 :) – shenn