2015-08-28 4 views
3

У меня есть коллекция, которая является dynamic. Я сохранил двойные значения в коллекции. Для некоторых записей я не храню данные. Теперь мне нужно получить этот тип как nullable double, чтобы выполнить некоторые операции. Есть ли способ получить тип свойства данных как nullable при использовании объекта Expando?Как получить тип как обнуляемый при использовании объекта Expando

ObservableCollection<dynamic> dynamicItems = new ObservableCollection<dynamic>(); 
for (int j = 1; j <= 4; j++) 
{ 
    dynamic data = new ExpandoObject(); 
    if (j == 2) 
    { 
     // not store the value when j is 2. 
    } 
    else 
    { 
     data.colValues = 12.2 * j;     
    } 

    dynamicItems.Add(data); 
} 
+0

Почему бы вам просто не создать класс для хранения этой информации? –

+0

Я привязываю эту коллекцию "dynamicItems" к datagrid –

ответ

3

Вы можете попробовать литья к Double?, а затем проверить, если colValues == null:

... 
    if (j == 2) 
    { 
     // not store the value when j is 2. 
     data.colValues = new Nullable<Double>(); // or (Double?) null; 
    } 
    else 
    { 
     data.colValues = (Double?) (12.2 * j);     
    } 
    ... 

    // if colValues exists 
    if (null != data.colValues) { 
    Double v = data.colValues; 
    ... 
    } 

Другой способ не делать ничего, а затем проверить, если поле (т.е. colValues) существует, но , ИМХО, это не то, что хорошо внедрение:

if (j == 2) 
    { 
     // not store the value when j is 2. - literally do nothing 
    } 
    else 
    { 
     data.colValues = 12.2 * j;     
    } 

    ... 
    // if colValues exists 
    if ((data as IDictionary<String, Object>).ContainsKey("colValues")) { 
    Double v = data.colValues; // or var v = data.colValues; 
    ... 
    } 
+0

Привет, можете ли вы поделиться, как это изменить в целом? –

+0

@ Elavarasan M: * второй * способ вообще не зависит от типа 'colValues'; путь * first * требует, чтобы 'colValues' являлся' struct' –

+0

Мне нужно выполнить некоторые операции на основе этого типа. Но, добавляя значение, я не даю тип. но когда вы выполняете некоторую операцию, мне нужно получить тип colvalues ​​как doubleable double. это любой вариант, чтобы получить это? Спасибо в Advance –