c# - 获取当前值和先前值

标签 c# linq

在下面的 LINQ 查询中,我想添加一个属性来获取之前的 Department 以及当前的 Department

下面的 LINQ 查询返回:

EffectiveDate EmployeeID  Department
11/4/2012     10          0000 
1/14/2013     10          9121 
2/2/2016      10          9123 

我怎样才能像这样在当前部门旁边显示上一个部门

EffectiveDate EmployeeID  Department PreviousDepartment
11/4/2012     10          0000       null
1/14/2013     10          9121       0000
2/2/2016      10          9123       9121

这是当前查询

var users = from s in userTable
            where s.EmployeeID == "10"
            group new {s} by new { s.EmployeeID, s.Department} into g
            select new 
            {
                EffectiveDate = g.Max(m => m.s.EffectiveDate), 
                EmployeeID = g.Key.EmployeeID, 
                Department = g.Key.Department
                //PreviousDepartment = ???
            };

最佳答案

一种方法是将数据存储在内存中,然后像这样修改它:

var users = from s in userTable
            where s.EmployeeID == "10"
            group new {s} by new { s.EmployeeID, s.Department} into g
            select new MyClass
            {
                EffectiveDate = g.Max(m => m.s.EffectiveDate), 
                EmployeeID = g.Key.EmployeeID, 
                Department = g.Key.Department
                PreviousDepartment = null
            };

var result = users.ToList();

for(int i = 1; i < result.Count; i++)
{
    result[i].PreviousDepartment = result[i-1].Department;
}

请注意,代码正在生成 MyClass 的新实例而不是匿名类型,因为匿名类型属性是只读的。确保您使用正确的属性创建此类。

关于c# - 获取当前值和先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35711373/

相关文章:

c# - Linq To SQL 选择动态列

c# - 如果特定单元格值在数据表 C# 中包含零,则跳过整行

c# - EntityFramework MySQL 检索结果进行计数

c# - 对从 Linq 查询访问私有(private)变量感到困惑

c# - DevExpress DXGrid 列标题双击事件

c# - 关闭第二个窗体后将文本框聚焦在主窗体上

c# - Entity Framework 多对多关系返回 Null

sql - Linq union 所有等价的 sql 代码

c# - serverless.template 中的 aws VS2017 无服务器应用程序语法用于将过滤器添加到 s3 通知

c# - 在构建时或运行时获取解决方案路径