簡體   English   中英

我可以在此查詢中使用 lastordefault 或 firstordefault 嗎? 怎么能?

[英]can I use lastordefault or firstordefault in this query ?. How can?

var Grdquery = from db in db.V_Salaries
.Where(i => i.InOut_Flag == 0 && i.Year == cariyil).OrderByDescending(i => i.Id)
 orderby db.Worker_Name, db.Year_Name
 select new { db.Id, };

foreach (var row in Grdquery)
{
    DataRow r = Table.NewRow();
    r["Id"] = row.Id;//0
    Table.Rows.Add(r);
 }

有員工45人。 每個員工至少有一個今年的工資記錄。 但是10個人有2個工資。 所有記錄都出現在我下面的查詢中。 單條記錄沒問題。 但我想要有 2 條記錄的員工的最后一條記錄。 我們該如何解決?

您可以按人員Id所有工資進行分組:

var grouped = Grdquery.GroupBy(g => g.Id)
    .Select(a = new {Id = a.Key, Salaries = a.Select(b => b).ToList()})

這樣你就可以為每個工人注冊 1 個寄存器,並且更高的 id 是較新的,因此它將是最后一個工資 ID 和 1 個工資

Grdquery.Where(i => i.InOut_Flag == 0 && i.Year == cariyil).GroupBy(g => g.Worker_Id,(Key,a)=>a.OrderByDescending(b=>b.id)。 FirstOrDefault()).OrderBy(x=>x.Worker_Name).ThenBy(x=>x.Year_Name).Select(x=>x.Id);

暫無
暫無

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

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