我正在针对 SP 列表触发 q LINQ 查询,以让所有员工参与其中,有多少项目属于他们以及总体百分比。
我现在被指出数据中的一个错误:在几行中,3 个用户没有被列为“姓氏,名字”,而是域\用户名。我需要消除数据中的这种不一致。
一种可能性是忽略名称包含“域\”的所有结果。但是,我想将这 3 个用户名映射到他们的真实姓名。
domain\user1 => lastname, firstname
domain\user2 => lastname, firstname
domain\user3 => lastname, firstname
然后将结果聚合到该用户的“姓氏,名字”行中
我的实际代码如下所示:
public IEnumerable<EmployeeVM> GetAllEmployees()
{
EntityList<TicketsElement> Tickets = _db.GetList<TicketsElement>("Tickets");
return Tickets.Where(b => b.BearbeiterID != null && b.BearbeiterImnName != String.Empty && b.BearbeiterImnName != null)
.GroupBy(b => b.BearbeiterImnName)
.OrderByDescending(b => b.Count())
.Select(b => new EmployeeVM() { Name = b.Key, val = b.Count() });
}
映射这 3 个用户并聚合相应结果的最佳方法是什么?
亲切的问候
/edit:我取得了一些轻微的进展。我已编辑 GroupBy 以反映 1 个用户。
.GroupBy(b => new { b.BearbeiterImnName, BearbeiterName = b.BearbeiterImnName == @"Domain\User1" ? "lastName, firstName" : b.BearbeiterImnName })
这会在列表中返回用户两次,这意味着我只需要找到一种方法来聚合具有相同用户名的行。