두 가지리스트 (별도 클래스)를 완전히 조인하려고합니다. 내가 이런 식으로해야하는 이유는 모든 주문이 필요하기 때문입니다 내 시스템에서 다른 시스템의 주문과 함께 일부 주문은 주문 번호와 일치하고 일부 주문은 일치하지 않습니다.하지만 여전히 모든 주문을 그리드에 표시하고 싶습니다.전체 외부 조인은 세 번째 클래스의 세 번째 목록으로 분리 된 클래스의 두리스트를 합친 것입니다.
두 인터페이스는 끝나게한다 HESE 두 개의 인터페이스의 조인이
interface IOrderInternal
{
int ID { get; } // My systems inernal ID
string NO_Order { get; } // My external ID
DateTime? OrderDate { get; }
}
interface IOrderExternal
{
int ID { get; } // External systems internal ID
string ProjectNumber{ get; }
}
같이
그래서 두 개의 목록이 완전 외부 그들에 가입해야하는 함수에 전달됩니다 interface IOrderInternal
{
int ID_IN { get; set; }
int ID_EX { get; set; }
string ProjectNumber{ get; set; }
DateTime OrderDate { get; set; }
}
, 내가 가입하면 NO_Order = ProjectNumber
IList<IOrderInternal> INOrders
IList<IOrderExternal> EXOrders
var leftJoin = from exorder in EXOrders
join inorder in INOrders
on exorder.ProjectNumber equals inorder.NO_Order
into temp
from inorder in temp
select new Order
{
ID_IN = inorder == null ? default(int) : inorder.ID,
ID_EX = exorder.ID,
ProjectNumber = inorder == null ? default(string) : inorder.NO_Order
OrderDate = inorder == null ? default(DateTime) : inorder.OrderDate
};
var rightJoin = from inorderin INOrders
join exorderin EXOrders
on inorder.NO_Order equals exorder.ProjectNumber
into temp
from exorder in temp
select new Order
{
ID_IN = inorder.ID,
ID_EX = exorder == null? default(int) : exorder.ID,
ProjectNumber = inorder.NO_Order
OrderDate = inorder.OrderDate
};
var joinedList = leftJoin.Union(rightJoin);
에 따라 목록 I에만 GE 내부 조인의 결과. 하지만 나는 모든 명령을 모두 알아야합니다.
어떤 도움을 어느 방향으로 조인
여러분의 인터페이스의 정의에서'IOrderInternal' 대신에'IOrderExternal'을 명명해야한다고 생각합니다. 그리고 조인 된 인터페이스는 다른 이름을 가져야합니다. – juharr
고마워, 지금 편집 해! – Alex