簡體   English   中英

從Datatable中查找一個與其max()值進行比較的值-LINQ查詢

[英]Find a value from Datatable compare with its max() value - LINQ Query

感謝您的幫助。 實際上,我有一個數據表的發票,具有諸如invoice_no,Invoice_dt,material_name,unit_price等字段。

但是我需要找到該物料的unit_price,這是該物料{max(invoice_dt)}的最后日期輸入,可以嗎?

var query = from t1 in invoice
        where t1.material_name == MyMaterial && t1.invoice_dt == (invoice.max(invoice_dt))
        select t1.unit_price;

從上面我的意圖是獲取unit_price的最新日期條目,它將是當前的市場價格...

var maxDate = invoice.Max(t1 => t1.invoice_dt);
var query = from t1 in invoice
        where t1.material_name == MyMaterial && t1.invoice_dt == maxDate)
        select t1.unit_price;

如果要檢索最大日期項目的價格,並按物料名稱分組發票:

var groupedInvoices = invoice.GroupBy(t1 => t1.material_name);
foreach (var group in groupedInvoices)
{
    var maxDate = group.Max(t1 => t1.invoice_dt);
    var maxDateItem = group.Single(item => item.invoice_dt == maxDate);
    Console.WriteLine(maxDateItem.unit_price);
}

我可以想到的最簡單的方法是使用擴展方法:

var query = invoice.SingleOrDefault(item => item.invoice_dt ==
    invoice.Where(inv => inv.material_name == MyMaterial).
    Max(inv => inv.invoice_dt)).Select(i => i.unit_price);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM