2016-06-06 2 views
0

나는이 목록을 확인한 다음 정의가 null이 아닌 다른 목록을 만듭니다. 개체의 매개 변수 값을 어떻게 설정할 수 있습니까?

var new = rootObject.webWordForms 
      .Where(w => w.definition != null) 
      .ToList(); 

public class WebWordForm 
{ 
    public string definition { get; set; } 
    public string partOfSpeech { get; set; } 
    public int sourceId { get; set; } 
    public List<string> synonyms { get; set; } 
    public List<string> typeOf { get; set; } 
    public List<string> hasTypes { get; set; } 
    public List<string> derivation { get; set; } 
    public List<string> examples { get; set; } 
} 

나는 또한 2의 값으로 내 rootObject.webWordForms 목록에 sourceId을 설정할 수있는 간단한 방법이 있습니까?

+4

는 LINQ를 사용하는 경우 조회되는. 나중에 루프를 수행하고 개체를 수정하십시오. –

+0

'.ForEach()'를 검사하고'new'에서 실행 –

+0

@ LasseV.Karlsen - 차이가 있는지는 확실하지 않지만 이것이 객체로하는 마지막 일입니다. 실제로 "var new ="는 실제로 "return"이지만 단순히 질문을 간단하게 만들고 싶었 기 때문에 내가 한 것처럼 넣었습니다. 감사합니다. – Alan2

답변

3
var new = rootObject.webWordForms 
      .Where(w => w.definition != null) 
      .Select(w => new WebWordForm{ 
    definition = w.definition, 
    partOfSpeech = w.partOfSpeech, 
    sourceId = 2, 
    synonyms= w.synonyms, 
    typeOf = w.typeOf, 
    hasTypes = w.hasTypes, 
    derivation = w.derivation, 
    examples = w.examples 
}).ToList(); 
+0

또한'definition ='등을 생략하여 선택적으로 간단하게 할 수 있습니다 :'newWebWordForm {wdefinition, w.partOfSpeech, sourceId = 2, w.synonyms ... ' –

3

이 방법을 사용하려면 List ForEach 메서드를 사용할 수 있지만이 점은 루핑과 다를 바 없음을 기억하십시오.

var list = rootObject.webWordForms 
      .Where(w => w.definition != null) 
      .ToList(); 

list.ForEach(x=> x.sourceId =2); 
+0

나는 downvote를 이해하지 못한다. – Sweeper

+2

기본적으로 새로운 List를 만들고, 루프를 실행 한 다음리스트를 버리면 특히 유용하지는 않다. 반환하기 위해서는, 다시 만들거나'ForEach'를 호출하기 전에 그것을 저장하십시오 : var stuff = rootObject.Where (...). ToList(); stuff.ForEach (...); 'ForEach'가'void'를 리턴하기 때문입니다. –

+0

@HenrikIlgen, 무슨 뜻인지 알았어. 내 대답이 업데이트되었습니다. 감사. –

2

사용 .ForEach()new에,이 목록 new에 반복과 PARAM을 업데이트 할 것입니다.

var finalList = rootObject.webWordForms 
      .Where(w => w.definition != null) 
      .ToList(); 

finalList.ForEach(n=>n.sourceId = 2); 

- 조회 된 최종 목록이 경우 return 당신은 아무것도를 반환하기 전에 작업 이상 할 필요가있다.

나는 ForEach()을 제안하지만 많은 기사에서는이를 피하는 데 중점을 둡니다.

대안, 당신은 개체를 수정 자제해야

var finalList = rootObject.webWordForms 
       .Where(w => w.definition != null) 
       .ToList(); 

finalList.All(n=>{ 
       n.sourceId = 2; 
       return true; 
      }); 
+1

그래도 new 키워드를 사용하지 않겠습니다. 변수 이름으로 :-) – atlaste

+0

하하 :) 그냥 위의 코드를 복사하여 복사하십시오. 감사! –

+0

@ShaunakD - .ToList() 뒤에 .All을 추가하여 두 문을 결합 할 수 있습니까? – Alan2

관련 문제