我有一个Employee Collection,我希望以这样的方式进行过滤,即只应过滤前2列,并且应附加第3列值,最终结果应该在一行中
以下是我的代码
List<Employe> Employeecollection = new List<Employe>();
Employeecollection.Add(new Employe("Employee1", "Dept1","Language1"));
Employeecollection.Add(new Employe("Employee2", "Dept2", "Language2"));
Employeecollection.Add(new Employe("Employee3", "Dept3", "Language3"));
Employeecollection.Add(new Employe("Employee3", "Dept3", "Language3"));
Employeecollection.Add(new Employe("Employee1", "Dept1", "Language2"));
foreach (Employe item in Employeecollection.GroupBy(x => new { fName = x.EmpName, lName = x.EmpDept, mName = x.KnownLanguages }).Select(g => g.First()))
{
Console.WriteLine(item.EmpName + " " + item.EmpDept + " " + item.KnownLanguages);
}
Run Code Online (Sandbox Code Playgroud)
但我想显示如下结果
Employee1 Dept1 Language1,Language2 Employee2 Dept2 Language2 Employee3 Dept3 Language3
按名称和部门对员工进行分组,然后为每个员工选择已知语言的连接字符串:
from e in Employeecollection
group e by new { e.Name, e.EmpDept } into g
select new {
g.Key.Name,
g.Key.EmpDept,
Languages = String.Join(",", g.Select(x => x.KnownLanguages))
}
Run Code Online (Sandbox Code Playgroud)
如果您希望结果为单行,则执行以下投影:
select String.Format("{0} {1} {2}",
g.Key.Name, g.Key.EmpDept, String.Join(",", g.Select(x => x.KnownLanguages)))
Run Code Online (Sandbox Code Playgroud)
BTW我认为它是一个奇怪的属性名称KnownLanguages,属性包含单一语言
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |