다음은 일부 linqpad 테스트 코드입니다. 이것이 실행되면 "item"의 두 번째 인스턴스에 빈 목록이 아닌 하위 항목의 null 목록이 있기 때문에 오류가 발생합니다.linq에서 빈 목록과 같이 null 목록을 어떻게 처리합니까?
정확히 같은 방식으로 두 상황 (null 또는 빈 목록)을 처리하려고하지만 null이있을 때 목록에 null 체크를 넣고 빈 목록을 초기화하는 것보다 더 깨끗한 방법이 있는지 궁금해했습니다.
from si in (i.subitems == null ? new List<item>() : i.subitems)
을하지만, 그건 좀 추한 그리고 내가 그 개선 수 있는지 궁금 : 즉
,이 작업을 수행 할 수 있습니까? 보너스 문제로
public class item
{
public string itemname { get; set; }
public List<item> subitems { get; set; }
}
void Main()
{
List<item> myItemList = new List<item>()
{
new item
{
itemname = "item1",
subitems = new List<item>()
{
new item { itemname = "subitem1" },
new item { itemname = "subitem2" }
}
},
new item
{
itemname = "item2"
}
};
myItemList.Dump();
var res = (from i in myItemList
from si in i.subitems
select new {i.itemname, subitemname = si.itemname}).ToList();
res.Dump();
}
이 같은 LINQ 쿼리는 람다로 표현하고 널 (null) 같은 방법으로 치료 될 수 있는가?
건배, 그것에 대해
사실 두 번째 옵션은 매우 읽기 쉽기 때문에 새 목록을 작성해야만 무시할 수 있습니다. 감사합니다 –
@Chris Simpson : 당신이 요청한 이후로 람다 버전을 추가했습니다.쿼리 구문 버전은보다 쉽게 읽을 수 있습니다. – jason
정말 Where 절이 가장 깨끗한 해결책이라고 생각하여 답변으로 표시하고 있습니다. 나는 단지 람다에 대해 호기심이 있었지만 동의한다, 그것은 읽기 쉽지 않다. 감사. –