C# 我可以在此查询中使用lastordefault或firstordefault吗?。怎么可能?
有45名工作人员。每位员工至少有一份本年度的工资记录。但是10个人有2份薪水。 所有记录都在我下面的查询中显示出来。单记录没有问题。但我要的是员工的最后一张记录,有两张记录。C# 我可以在此查询中使用lastordefault或firstordefault吗?。怎么可能?,c#,linq,C#,Linq,有45名工作人员。每位员工至少有一份本年度的工资记录。但是10个人有2份薪水。 所有记录都在我下面的查询中显示出来。单记录没有问题。但我要的是员工的最后一张记录,有两张记录。 我们如何解决它?您可以按人员对所有工资进行分组Id: var Grdquery = from db in db.V_Salaries .Where(i => i.InOut_Flag == 0 && i.Year == cariyil).OrderByDescending(i => i.Id)
我们如何解决它?您可以按人员对所有工资进行分组
Id
:
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);
}
这样,每个工人将有一个注册表,higger 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).然后by(x=>x.Year_Name).选择(x=>x.Id) 如何确定员工的最后记录?是否有任何日期列或ID是否始终在计数?你能提供三到五个数据示例吗?在这种情况下,我们可以基于数据对查询进行建模,而不是根据不工作的查询对数据结构进行反向工程。年份名称收据日期工人姓名工资工人代码Id 2019 1.01.2019埃尔丹·比罗尔1829.00 7 94 2019 1.08.2019埃尔坎·门德·阿奥勒夫2434.00 71 141 2019 1.09.2019埃尔坎·门德·阿勒夫2434.00 71 145 2019 1.01.2019法塔玛德莫兹1872.53 8 103 2019 1.01.2019古尔贝萨姆萨2700.00 14 104 2019 1.08.2019马穆特Yılmaz 4000.00 59 142 2019 1.01.2019马穆特Yılmaz 3300.00 59 93您能否更新您的问题以添加样本数据?这比阅读评论要容易得多。非常感谢你。事情就是这样发生的。列出Grdquery=db.V\u工资。其中(i=>i.InOut\u标志==0和i.Year==cariyil)。OrderBy(x=>x.Worker\u名称)。然后by(x=>x.Year\u名称)。GroupBy(g=>g.Worker\u代码,(Key,a)=>a.OrderByDescending(b=>b.Id)。FirstOrDefault()).ToList();
var grouped = Grdquery.GroupBy(g => g.Id)
.Select(a = new {Id = a.Key, Salaries = a.Select(b => b).ToList()})