您好我有一个列表,它返回多个employee name
,number
,其中Trip
我想只显示一个员工姓名和员工编号。
我该如何处理不同的
employee name
和employee number
List<MYLIST> assm = Utilities.LoadEntityInstances<VMYLIST>()
// some code to get all data of MYLIST
List<Employee> employees = new List<Employee>();
foreach (var item in assm)
{
employees.Add(new Employee { Name = item.EmployeeName, EmployeeNumber = item.EmployeeNumber, LaborTypeName = item.LaborTypeName, SysId = item.Employee });
}
Nwow employees
对象返回多条记录
我想在name
和number
答案 0 :(得分:2)
试试这个:
employees.GroupBy(x => new { x.Name, x.EmployeeNumber } )
.ToList()
.ForEach(x =>
{
var row = x.First();
Console.WriteLine("Name: {0}\nNumber: {1}\nLabor: {2}\nSysId: {3}", x.Key.Name, x.Key.EmployeeNumber, row.LaborTypeName, row.SysId);
});
或者
var distincts = employees.GroupBy(x => new { x.Name, x.EmployeeNumber } )
.Select(x => new Employee
{
Name = x.Key.Name,
EmployeeNumber = x.Key.EmployeeNumber,
LaborTypeName = x.First().LaborTypeName,
SysId = x.First().SysId
})
.ToList();
但请注意,这是事后行动。如果您需要动态执行,请尝试以下操作:
List<MYLIST> assm = Utilities.LoadEntityInstances<VMYLIST>()
List<Employee> employees = new List<Employee>();
foreach (var item in assm)
{
// if this element was not added before
if (employees.All(x => x.Name != item.EmployeeName && x.EmployeeNumber != item.EmployeeNumber))
employees.Add(new Employee { Name = item.EmployeeName, EmployeeNumber = item.EmployeeNumber, LaborTypeName = item.LaborTypeName, SysId = item.Employee });
}
这是一个非常简单的解决方案,实际上并不是最有效的。为了提高速度,您可以使用Dictionary
。
答案 1 :(得分:2)
var ls = employees.Select(x=>
new {
Name = x.EmployeeName
,Number = x.EmployeeNumber
}
).Distinct().ToList();