2015-11-04 173 views
1

假设我有多维对象数组,表示例如雇员信息字符串图案在多维字符串数组搜索[,]

String[,] Employee= new object[,] { 
      {"john","MBA#MBA#BE#MBA#BE"}, 
      {"jan","MS#MSC#MBA"}, 

}; 

可视

john     MBA#MBA#BE#MBA#BE  
jan     MS#MSC#MBA 

我想删除的复制数据(其中数据除以#)

john     MBA#BE 
jan     MS#MSC#MBA 
+1

为什么不创建一个适当的类而不是使用数组? – juharr

+0

你最好使用这个字典。 –

回答

1

对于这种情况,最好使用字典:

Dictionary<string, string> employee = new Dictionary<string, string>() 
{ 
    {"john", "MBA#MBA#BE#MBA#BE"}, 
    {"jan", "MS#MSC#MBA"} 
} 

Dictionary<string, string> result = new Dictionary<string, string>(); 

foreach (var kvp in employee) 
{ 
    result[kvp.Key] = string.Join("#", kvp.Value.Split('#').Distinct()); 
} 

result字典将包含结果:

// Prints "MS#MSC#MBA" 
Console.WriteLine(result["jan"]); 

// Prints "MBA#BE" 
Console.WriteLine(result["john"]); 
0

个人而言,我想创建一个类来保存这些信息

public class Employee 
{ 
    public Employee(string name) 
    { 
     Name = name; 
     Degress = new HashSet<string>(); 
    } 

    public string Name { get; private set; } 
    public HashSet<string> Degrees { get; private set; } 
} 

然后,你可以这样来填充他们的列表

string[,] employeeArray = { { "john", "MBA#MBA#BE#MBA#BE" }, { "jan", "MS#MSC#MBA" } }; 

List<Employee> employees = new List<Employee>(); 

for (int i = 0; i < employeeArray.GetLength(0); i++) 
{ 
    Employee employee = new Employee(employeeArray[i,0]); 
    foreach (var degree in employeeArray[i, 1].Split('#')) 
    { 
     employee.Degrees.Add(degree); 
    } 

    employees.Add(employee); 
} 

foreach (var e in employees) 
{ 
    Console.WriteLine(e.Name + " " + string.Join(" ", e.Degress)); 
} 

它打印

约翰MBA BE

扬MS MSC MBA

因为DegreesHashSet它不会允许重复,当你试图复制传递给Add它会只需返回false