2012-04-14 3 views
-2

У меня есть словарь вроде Dictionary<string,Object>, есть ли какой-либо метод преобразования Словаря в массив объектов, где класс объекта будет содержать два члена - один из которых будет строка, а другой будет объект, хранящийся как значение пары в dictionary.Please помощь !!! ..копировать словарь, содержащий объект для массива объектов C#

+1

Без более подробно, вы можете иметь 'dictionary.ToArray()', который дает вам именно ваше описание. А именно, массив 'KeyValuePair '. Что еще вам понравится? –

+0

Я хочу массив [] объектов следующего класса: Class A {string, object}. В настоящее время у меня есть значения в словаре Dictionary , я не хочу, чтобы какой-либо другой тип Collection, отличный от массива, в моем результирующем наборе. Пара значений в словаре содержит объект коллекции типов, я хочу преобразовать даже это коллекции в массив. –

ответ

0

Учитывая класс:

class ClassA 
{ 
    string CustomerId { get; set; } 
    PatientRecords[] Records { get; set; } 

    public ClassA(string name, PatientRecords[] records) 
    { 
     Name = name; 
     Records = records; 
    } 
} 

Я предполагаю, что CollectionOfPatientRecords реализует IEnumberable:

var dict = new Dictionary<string, CollectionOfPatientRecords> (...);

Затем, чтобы получить ваш массив ClassA с нужными значениями:

dict.Select(kv => new ClassA(kv.Key, kv.Value.ToArray())).ToArray(); 
+0

У меня есть словарь и вы хотите преобразовать его в Array [] класса A, где класс A содержит: Member 1: string, Member 2: Array класса, используемого в паре значений словаря –

+0

Класс A {PatientRecords [ ], CustomerID \t string}, а диктофон содержит ... Словарь <идентификатор клиента, CollectionofPatientrecords>. Что я хочу - это массив класса A из словаря. –

+0

Эй, спасибо, тонну! !!!! –

1

Dictionary<TKey, TValue> реализует IEnumerable<T> где T является KeyValuePair<TKey, TValue>. Для того, чтобы сгладить это в массив все, что необходимо, чтобы назвать IEnuemrable<T>.ToArray как такового:

Dictionary<string, int> dict = new Dictionary<string, int>() { { "Key1", 0 }, { "Key2", 1 } }; 
var kvArray = dict.ToArray(); 

kvArray затем будет массив объектов, которые ссылаются на ключи и значения каждого элемента в dict как два отдельных членов одного и того же объекта ,

Ваш вопрос немного неоднозначен, хотя, возможно, дальнейшее объяснение поможет нам найти более подходящее решение.


Re ваш комментарий, LINQ хорош для этого:

Dictionary<string, int[]> dict = new Dictionary<string, int[]>() { { "Key1", new int[] { 0, 1, 2 } }, { "Key2", new int[] { 4, 5, 6 } } }; 

var pairs = dict.SelectMany(pair => pair.Value 
       .Select(v => 
        new { 
         Key = pair.Key, 
         Value = v 
        } 
       ) 
      ); 
+0

Переменная int в вашем примере является объектом коллекции в моем случае, я хочу преобразовать ее в массив -> Словарь <строка, объект класса типа коллекции> ---> в ----> Array [ ] класса, в котором класс содержит два члена: Member 1: string, Member 2: Array [] .. член 2 является типом коллекции переменных в словаре ... –

+0

Обновленный ответ для обработки этой ситуации ... –

Смежные вопросы