2つのListデータセットを1つのListにまとめる

2943 ワード

開発ツールとキーテクノロジー:Visual StudioとC#
作者:黄燦
作成時間:2019.7.25
2つの差が異なるテーブルをクエリーします.1つは入庫テーブルで、1つは返品テーブルで、フィールドはほぼ同じですが、違いがあります.入庫テーブルの数とすべての金額は正数で、返品テーブルの数と金額は負数です.だからjoinチェーンテーブルクエリーはできません.2つのToListを別々にクエリーする必要があります.しかしreturnは1つしかなく、returnは2回もできず、クエリーされたデータは1つの決算表に置くことも、2つのactionを持つこともできません.だから私は2回照会して、1回join入庫表、1回join返品表、照会したデータは2つのリストにあります.


List
listStorageSettlement = (from tbSupplier in myModels.SYS_Supplier
			join tbPurchaseStorage in myModels.PW_PurchaseStorage on tbSupplier.SupplierID equals tbPurchaseStorage.SupplierID
			join tbInvoicesType in myModels.SYS_InvoicesType on tbPurchaseStorage.InvoicesTypeID equals
			tbInvoicesType.InvoicesTypeID
			where tbSupplier.SupplierID == SupplierID&&
			tbPurchaseStorage.SettleStateID!=2&&tbPurchaseStorage.SettleStateID!=4
			select new SupplierVo
			{
				InvoicesType =tbInvoicesType.InvoicesType,//    
				InvoicesTypeID =tbInvoicesType.InvoicesTypeID,//    
				StorageNumber =tbPurchaseStorage.StorageNumber,//    
				PurchaseStorageID =tbPurchaseStorage.PurchaseStorageID,//  ID
				makeFormDate = tbPurchaseStorage.MakeFormDate.ToString(),//      
				amountMoney =tbPurchaseStorage.AmountMoney,//      
				PaidAmount = 0,//    
				OutstandingAmount =tbPurchaseStorage.AmountMoney,//    
				DiscountedTotalAmount= 0,//     
				ThisDiscountAmount =0,//      
				ThisPaymentAmount =tbPurchaseStorage.AmountMoney,//      
			}).ToList();
List
listReturnSettlement = (from tbSupplier in myModels.SYS_Supplier
			join tbPurchaseReturn in myModels.PW_PurchaseReturn on tbSupplier.SupplierID equals tbPurchaseReturn.SupplierID
			join tbInvoicesType in myModels.SYS_InvoicesType on tbPurchaseReturn.InvoicesTypeID equals tbInvoicesType.InvoicesTypeID
			where tbPurchaseReturn.SupplierID == SupplierID &&tbPurchaseReturn.SettleStateID != 2 &&tbPurchaseReturn.SettleStateID!= 4
			select new SupplierVo
			{
		
				InvoicesType =tbInvoicesType.InvoicesType,///    
				InvoicesTypeID =tbInvoicesType.InvoicesTypeID,///    
				ReturnNumber =tbPurchaseReturn.ReturnNumber,//    
				PurchaseReturnID = tbPurchaseReturn.PurchaseReturnID,//  ID
				makeFormDate =tbPurchaseReturn.MakeFormDate.ToString(),//      
				amountMoney =tbPurchaseReturn.AmountMoney,//      
				PaidAmount = 0,//    
				OutstandingAmount =tbPurchaseReturn.AmountMoney,//    
				DiscountedTotalAmount= 0,//     
				ThisDiscountAmount =0,//      
				ThisPaymentAmount =tbPurchaseReturn.AmountMoney,//                                                       
			}).ToList();
クエリの2つのList集合Listは同一でなければマージできません.2つのListデータ集合をクエリした後、


IEnumerable intsResult =listStorageSettlement.Union(listReturnSettlement)


再インスタンスの1つの集合を行い、IEnumerableは列挙を公開し、集合は簡単な反復伝送を行うことができ、Unionは2つのListデータ集合の並列集合をつなぎ合わせ、最後にintsResultに戻るだけで2つのToListのデータをすべてreturnすることができる.