아래의 종류의 코드로 '객체 참조가 설정되지 않음'을 표시합니다. 왼쪽 결합을 위해 DefaultIfEmpty()
을 추가 할 때 문제가 발생합니다. 그러나 보고서에서 lst1
의 네 번째 항목에 대해 PLACE
이 없음을 확인해야합니다.목록이있는 LINQ 쿼리 <T> "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."
PLACE
이 null
인 줄은 어떻게 얻을 수 있습니까? 다음은 LinqPad의 코드 예제입니다.
줄의 주석을 제거한 경우 : new ID(){id1 = 10152 , id2 = null}
오류가 발생합니다.
var Lst1 = new List<ID>
{
new ID(){id1 = 10152 , id2= 250},
new ID(){id1 = 10152 , id2 = 1},
new ID(){id1 = 10152 , id2= 106},
//new ID(){id1 = 10152 , id2 = null}
};
var Lst2 = new List<STORE>
{
new STORE() {sto1 = 10152 , sto2 = "General Store"}
};
var Lst3 = new List<PLACE>
{
new PLACE() {pla1 = 250 , pla2 = "London"},
new PLACE() {pla1 = 1 , pla2 = "Paris"},
new PLACE() {pla1 = 106 , pla2 = "Miami"}
};
var regsup =
(from l in Lst1
join st in Lst2 on l.id1 equals st.sto1
join pl in Lst3 on l.id2 equals pl.pla1 into pll
from plll in pll.DefaultIfEmpty()
select new
{
StoID = st.sto1,
Store = st.sto2,
PlaceID = plll.pla1,
Place = plll.pla2
}).Distinct();
regsup.Dump();
}
class ID
{
public decimal id1 { get; set; }
public decimal? id2 { get; set; }
}
class STORE
{
public decimal sto1{ get; set; }
public string sto2{ get; set; }
}
class PLACE
{
public decimal pla1{ get; set; }
public string pla2{ get; set; }
}
예 내가 몇 가지 유사한 사례를 발견하지만, 목록으로 쿼리를 시작 결코 때 . 이 질문은 Chris에 의해 해결되었습니다. itsef (plll) 소스에서 삼항 항을 사용하는 것이 해결책입니다. Linqpad는 또한이 질문의 장점이기도합니다. 모두에게 감사드립니다. G. –
GYCO50