des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

C# асоциативные массивы?

получаю предположим такие данные

_
           id name value
           1  name    1
           2  name    2
           3  name2  NaN
           4  name2  NaN
           5  name3  10

            var NonValueArray = new Dictionary<string, double>();

            for (int i = 0, cnt = c.Count; i < cnt; i++)
            {
                logger.Trace(c[i].id + " " + c[i].value + " " + c[i].server);
                if (Double.IsNaN((c[i].value)))
                {
                    NonValueArray.Add(c[i].service, c[i].id);
                }
            }
            foreach (var pair in NonValueArray)
            {
                Console.WriteLine(pair.Key + " = " + pair.Value);
            }

получаю
Элемент с тем же ключом уже был добавлен.


я хочу получить массив всех имен где значение NaN. если пробежаться по списку и делать. add то получу дубли. как получить набор уникальных имен
  • Вопрос задан
  • 227 просмотров
Пригласить эксперта
Ответы на вопрос 3
des1roer
@des1roer Автор вопроса
ученье - свет, а неученье - приятный полумрак
var NonValueArray = new Dictionary<string, double>();

            for (int i = 0, cnt = c.Count; i < cnt; i++)
            {
                logger.Trace(c[i].id + " " + c[i].value + " " + c[i].server);
                if (Double.IsNaN((c[i].value)))
                {
                    //NonValueArray.Add(c[i].service, c[i].id);
                    NonValueArray[c[i].service] = c[i].id;
                }
            }
            foreach (var pair in NonValueArray)
            {
                Console.WriteLine(pair.Key);
            }
Ответ написан
DmitryITWorksMakarov
@DmitryITWorksMakarov
А обязательно хранить?

public class Id: UInt32{}
public class Name: string{}
public class Value: double{}
 
public class IdNameValue
{
    public Id id{get;set;}
    public Name name {get; set;}
    public Value value {get; set;}
}

IEnumerable<IdNameValue> idNameValues = Create();

var idNameValuesWhereValueIsNaN = idNameValues.Where(item=>double.IsNaN(item.value));
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
В цикле заполняйте именами контейнер типа "множество" (sorted set, hash set). Они не задваивают данные и не выводят ошибки, если данные уже есть.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы