Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以在此查询中使用lastordefault或firstordefault吗?。怎么可能?_C#_Linq - Fatal编程技术网

C# 我可以在此查询中使用lastordefault或firstordefault吗?。怎么可能?

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)

有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)
 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()})