티스토리 뷰

🌈 .NET MVC

DataTable with "group by", "where"

James Wetzel 2024. 7. 19. 16:20
728x90
반응형

group by

// group by
var purchaseOrders = from row in lorealPurchaseOrderDataTable.AsEnumerable()
                     group row by row.Field<long>("lpo_seq_no") into grp
                     select new
                     {
                          lpo_seq_no = grp.Max(r => r.Field<long>("lpo_seq_no")),
                          purchase_order_title = grp.Max(r => r.Field<string>("purchase_order_title")),
                          reg_dt = grp.Max(r => r.Field<DateTime>("reg_dt"))
                     };

foreach (var purchaseOrder in purchaseOrders)
{
    lorealPurchaseOrders.Add(new LorealPurchaseOrder() {
        LpoSeqNo = purchaseOrder.lpo_seq_no,
        PurchaseOrderTitle = purchaseOrder.purchase_order_title,
        RegDate = string.Format("{0}", purchaseOrder.reg_dt)
    });
}

 

Where

// Where
var purchaseOrderSkus = from row in lorealPurchaseOrderDataTable.AsEnumerable()
                        where row.Field<long>("lpo_seq_no") == lorealPurchaseOrder.LpoSeqNo
                        select new
                        {
                            lpos_seq_no = row.Field<long>("lpos_seq_no"),
                            lps_seq_no = row.Field<long>("lps_seq_no"),
                            sku_no = row.Field<string>("sku_no"),
                            sku_name = row.Field<string>("sku_name"),
                            sku_option_name = row.Field<string>("sku_option_name"),
                            vendor_item_code = row.Field<string>("vendor_item_code"),
                            supply_price = row.Field<decimal>("supply_price"),
                            vat_price = row.Field<decimal>("vat_price"),
                            total_price = row.Field<decimal>("total_price"),
                        };

List<LorealPurchaseOrderSku> lorealPurchaseOrderSku = new List<LorealPurchaseOrderSku>();
foreach (var purchaseOrderSku in purchaseOrderSkus)
{
    lorealPurchaseOrderSku.Add(new LorealPurchaseOrderSku() {
        LposSeqNo = purchaseOrderSku.lpos_seq_no,
        LpsSeqNo = purchaseOrderSku.lps_seq_no,
        SkuNo = purchaseOrderSku.sku_no,
        SkuName = purchaseOrderSku.sku_name,
        SkuOptionName = purchaseOrderSku.sku_option_name,
        VendorItemCode = purchaseOrderSku.vendor_item_code,
        SupplyPrice = purchaseOrderSku.supply_price,
        VatPrice = purchaseOrderSku.vat_price,
        TotalPrice = purchaseOrderSku.total_price
    });
}
728x90
반응형