[英]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.