이것은 LINQ 쿼리에서 새 개체를 만드는 데 필요한 구문에 대한 좋은 기사입니다 .
그러나 객체의 필드를 채우는 할당이 단순한 할당 (예 : 문자열을 정수로 파싱하는 것) 이상인 경우 그 중 하나가 실패하면 디버깅 할 수 없습니다. 개별 할당 중 하나에 중단 점을 만들 수 없습니다.
모든 할당을 서브 루틴으로 이동하고 거기에서 새 오브젝트를 리턴하고 해당 루틴에서 중단 점을 설정하려고 시도하면 해당 루틴에서 중단 점을 설정할 수 있지만 중단 점은 트리거되지 않습니다.
그래서 대신 :
var query2 = from c in doc.Descendants("SuggestionItem")
select new SuggestionItem
{ Phrase = c.Element("Phrase").Value
Blocked = bool.Parse(c.Element("Blocked").Value),
SeenCount = int.Parse(c.Element("SeenCount").Value)
};
또는
var query2 = from c in doc.Descendants("SuggestionItem")
select new SuggestionItem(c);
내가 대신했다 :
List<SuggestionItem> retList = new List<SuggestionItem>();
var query = from c in doc.Descendants("SuggestionItem") select c;
foreach (XElement item in query)
{
SuggestionItem anItem = new SuggestionItem(item);
retList.Add(anItem);
}
이 허용 나를 쉽게 디버그 및 실패 된 할당을 파악한다.이 경우 XElement에 SuggestionItem에서 설정할 구문 분석 필드가 누락되었습니다.
새 라이브러리 루틴에 대한 단위 테스트를 작성하는 동안 Visual Studio 2017에서 이러한 문제가 발생했습니다.
고마워, 이건 내게는 – Jeff