假设我有以下代码(简化)使用带有左外连接的 linq to sql:
public class Program
{
public static void Main()
{
IList<Payment> paymentsList = new List<Payment>() {
new Payment() { ID = 1, Amount = 4 } ,
new Payment() { ID = 2, Amount = -11 } ,
new Payment() { ID = 3, Amount = 11 }
};
IList<Allocation> allocationList = new List<Allocation>() {
new Allocation(){ OriginalID = 1, ReversalID=2},
new Allocation(){ OriginalID = 2, ReversalID=3}
};
var summaryPayments = from s in paymentsList
join alloc in allocationList on s.ID equals alloc.OriginalID into allocOrg
from po in allocOrg.DefaultIfEmpty()
join allocRev in allocationList on s.ID equals allocRev.ReversalID into allocRevs
from pr in allocRevs.DefaultIfEmpty()
select new Payment{Amount=s.Amount, ReversalId = (pr != null ? pr.ReversalID : 0)};
foreach (var obj in summaryPayments)
{
Console.WriteLine("{0} - {1}", obj.Amount,obj.ReversalId);
}
}
}
public class Payment{
public int ID { get; set; }
public decimal Amount { get; set; }
public int? ReversalId { get; set; }
}
public class Allocation{
public int OriginalID {get;set;}
public int ReversalID { get; set; }
}
慕妹3146593
相关分类