I have a 포리치 루프 판독값 객체의 목록을 객체에는 한 가지 유형의 바뀌엇어요 생산 · 판매하는 다른 유형의. I was 리즈한테 표현식에서는 동일한 결과를 얻을 수 있는 람다.
var origList = List<OrigType>(); // assume populated
var targetList = List<TargetType>();
foreach(OrigType a in origList) {
targetList.Add(new TargetType() {SomeValue = a.SomeValue});
}
감사합니다. s
다음 시도하시겠습니까
var targetList = origList
.Select(x => new TargetType() { SomeValue = x.SomeValue })
.ToList();
이것은 LINQ 솔루션 및 람다 조합을 통해 얻을 수 있습니다. 스타일 선택 기능을 사용할 수 있는 방법을 적용하십시오 위임합니다 투영 (또는 람다 (λ) 이 경우) 를 통과한 최초의 모든 값을 뜻한다. 그 결과, 새 ',' TargetType> IEnumerable< 돌려받는다. 이 방법을 ',' 이 되는 것은 네스토리스트 호출하십시오 확장명으로 변환하십시오 IEnumerable< TargetType> 붙여넣습니다 TargetType> List<; ','.
, 그들이숨기는 변환할 경우 ',' 에서 ',' 을 List< T1> List< T2>, 다음 ',' List<, T> 이컨베르톨 은 약간 '선택' / '' 정확한 크기 때문에 비해 보다 효율적인 토리스트 계시나니 시작.
target = orig.ConvertAll(x => new TargetType { SomeValue = x.SomeValue });
더 일반적인 경우에 대해 알고 있는 경우에만 ',', '를 사용하여 소스 표시됨과 IEnumerable< T>' / '' 는 토리스트 갈 길. , 와 LINQ in a world 수 있습니다 또한 주장한다; s # 39 더 성어는 it& 시작. 하지만 적어도 it& # 39 에 달하는 '콘버탈' 옵션을 알고 있다.
이 같은 일이 노력해야 할 것이라고 생각합니다.
origList.Select(a => new TargetType() { SomeValue = a.SomeValue});
여러 개의 속성 운영까지도 변환하십시오 있다고 가정하겠습니다.
public class OrigType{
public string Prop1A {get;set;}
public string Prop1B {get;set;}
}
public class TargetType{
public string Prop2A {get;set;}
public string Prop2B {get;set;}
}
var list1 = new List<OrigType>();
var list2 = new List<TargetType>();
list1.ConvertAll(x => new OrigType { Prop2A = x.Prop1A, Prop2B = x.Prop1B })
함수를 사용해야 할 경우 캐스트:
var list1 = new List<Type1>();
var list2 = new List<Type2>();
list2 = list1.ConvertAll(x => myConvertFuntion(x));
여기서 내 사용자 정의 함수 () 는:
private Type2 myConvertFunction(Type1 obj){
//do something to cast Type1 into Type2
return new Type2();
}
함께 '또는' 구성자를 &. '링크' 을 (를) '선택':
public class TargetType {
public string Prop1 {get;set;}
public string Prop1 {get;set;}
// Constructor
public TargetType(OrigType origType) {
Prop1 = origType.Prop1;
Prop2 = origType.Prop2;
}
}
var origList = new List<OrigType>();
var targetList = origList.Select(s=> new TargetType(s)).ToList();
'더 선' 이 링크를 소프트! -)