2011-11-09 6 views
1

난 일부 데이터의 모음으로,이 클래스를 사용하고 내 비즈니스 로직이 일부 행을 추가일반 목록

public class abc 
{ 
    int id; 
    string name; 
} 

난 다음 클래스가 있다고 가정하자 C#에서 프로퍼티의 값을 수정합니다.

이제 일부 속성 값을 수정해야한다면 일부 값으로 이름 속성을 수정하고 싶다고 말하면됩니다.

string replaceName = 'jay'; 

그래서이 제이 이름 속성의 목록의 모든 행에 있어야합니다.

이 어떻게 할까? 나는 convertAll 메서드를 사용할 수 있다고 생각합니다 ....

답변

6

ConvertAll은 일반적으로 새로운 리스트을 만드는 데 사용되는 반면, 기존 개체의 속성을 수정하려는 것처럼 들립니다. 그래서 사용하십시오 :

foreach (abc value in lstData) 
{ 
    value.name = replaceName; 
} 

(당신이 그런데, .NET naming conventions 다음과 같은 이름을 사용했던 경우이 코드는 더 관용적 보일 것이다.)

다른 방법으로, ConvertAll를 사용할 수 생성하기를 원한다면 새로운 물체 각 개체에 새로운 속성을 설정하기위한 대표 람다 식 및 객체 이니셜을 사용하고

List<abc> newList = lstData.ConvertAll(old => new abc { 
    id = old.id, 
    name = replaceName 
}); 

. 당신이 이것에 접근하는 정확한 방법은 실제 수업에 달려 있습니다.

+0

는 내가 원하는 것은 목록의 특정 속성은 모든 행에서 변경해야합니다 변경되지 않아야 목록의 속성의 나머지 부분입니다 코딩. 이 경우 이름은 어떤 것으로 변경해야하지만 ID는 동일하게 유지되어야합니다. 그것은 성취 될 수 있는가? – ankur

+0

@ankur : 처음 코드를 사용해 보셨습니까? 이것은 단지 목록에있는 모든 객체의 단일 속성을 수정합니다. –

+0

나는 int k = 1234와 같은 생각을하려고 노력했다. 목록 lst = 새 목록 (); getData g = 새 getData(); (int i = 0; i <2; i ++)에 대한 { g.i = i; g.name = "ank"+ i.ToString(); lst.Add (g); } 문자열 b = "Rahul"; lst.ConvertAll (s => s.name = b); 그리고 그것은 그 일을하고 있습니다. – ankur

0

목록에있는 모든 개체의 속성에 같은 값을 지정 하시겠습니까? 예 위에 당신에게 루프 경우

foreach (var item in lstData) 
{ 
    item.name = "jay"; 
} 
2

사용이 List.ForEach

lstData.ForEach(x => x.name = "jay"); 
+0

개인적으로'ForEach'를 사용할 좋은 이유가 없다면'foreach'를 사용하는 편이 낫습니다 (예를 들어 이미 대리인이 * 있습니다). http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx –

+0

@Jon 대부분 C++ 배경을 참조하십시오. C++이 없었기 때문에 std :: for_each를 사용하지 않았습니다. 람다 있어요. 그래서 상상할 수 있습니다 !! 귀하의 도서를 읽고 BTW ** C 깊이의 **. .. 그 놀라운. 내가 집어 들었던 첫 번째 프로그래밍 책은 나에게 for/while 루프를하는 법을 가르쳐주지 않았다. 적어도 아직은 아니었다. –

+0

당신이 그것을 즐기고있어서 기쁘다 - 나는 아주 의도적으로 * 책을 쓰고 싶었다. 아무 지식이 없다고 가정하고 시작하자 :) –

1

당신은 LINQ 연산자를 ForEach() 아래를 사용할 수 있습니다

lstData.ForEach(data => data.Name = replaceName); 
0

나는 때를 실제 생활에서 생각 Name을 수정하려면 ID가 있어야합니다. 따라서 다음과 같이 목록에서 수정할 수있는 단일 개체를 찾을 수 있습니다.

당신이 objAbcyou can do objAbc.Name = "New Name"

이 있으면 16,

abc objAbc =(
    from emp 
    in lstData 
    where emp => emp.Id = someId 
    select emp) 
    .SingleOrDefault();

는 나는 당신이 알고 싶은거야 바랍니다. linq-to-object를 사용하려면 System.Linq을 사용해야합니다.

해피