我正在使用C#(.NET 4.0)。我有一个
class Employee
{
public string Location { get; set; }
public int ID { get; set; }
public string FilterType { get; set; }
public Employee(string name, int id, string fType)
{
Location = name;
ID = id;
FilterType = fType;
}
}
List<Employee> empList = new List<Employee>();
Employee e = new Employee("[IND].[MH].&1", 1, "="); empList.Add(e);
e = new Employee("[SNG].[Tampines].&1", 7, "="); empList.Add(e);
e = new Employee("[IND].[MP].&2", 5, "="); empList.Add(e);
e = new Employee("[USA].[NYC].&2", 9, "="); empList.Add(e);
e = new Employee("[IND].[MH].&3", 3, "="); empList.Add(e);
e = new Employee("[IND].[MP].&1", 4, "="); empList.Add(e);
e = new Employee("[SNG].[Bedok].&1", 6, "="); empList.Add(e);
e = new Employee("[USA].[NYC].&1", 8, "="); empList.Add(e);
e = new Employee("[IND].[MH].&2", 2, "="); empList.Add(e);
我想做什么:
如果唯一列表中的项目是&#39; [USA]。[NYC]&#39;,在循环empList之后,输出应为{[USA]。[NYC]。&amp; 1,[ 。USA] [NYC]&安培; 2}。如果唯一列表中的项目是&#39; [SNG]。[Tampines]&#39;投入应该是&#39; {[SNG]。[Tampines]。&amp; 1}&#39;
我可以通过做这样的事情来实现这个目标
在empList上运行循环 - 将名称拆分为&#39;。&amp;&#39;并在字典中添加结果以确保只添加唯一项
然后在唯一列表上运行循环 - 在此循环内运行empList上的另一个循环,并检查empList中的当前项是否包含uniqueList项并执行字符串操作。
我想知道是否有更聪明的方法来实现这一目标。
由于
答案 0 :(得分:0)
是的,有一种更简单的方法。您可以按功能使用LINQ组:
var grouped = from emp in empList
group emp by emp.Location.Split('&')[0] into g
select new {LocCode = g.Key, Emps = g};
foreach (var group in grouped) {
// group.LocCode contains, e.g., [USA].[NYC].,
// group.Emps contains all employees at this location
}