Задать вопрос
StaDi
@StaDi
Курьер в it отделе

Чем в c# заменяют многомерные ассоциативные массивы?

Подскажите как реализуется в c# подобные вещи?
В php это называется многомерные ассоциативные массивы, ниже пример:

massiv[i] = array{ 
name => "", 
size => "", 
position => "", 
text  => ""
}


У меня в проекте из бд вытаскиваются данные о объекте, хочется их все записать, пронумеровать и что бы по полочкам всё было.

Спасибо!
  • Вопрос задан
  • 11119 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@AlexP11223
У меня в проекте из бд вытаскиваются данные о объекте

Ну так и создайте класс и объект (можно еще на ORM типа Entity Framework посмотреть), причем тут массив?

А вообще для ассоциативных массивов можно использовать Dictionary msdn.microsoft.com/en-us/library/xfhwa508%28v=vs.1...
Ответ написан
Комментировать
Boxxy
@Boxxy
public class SomeClassName {
    public string Name {get;set;}
    public int Size {get;set;}
    public int Position {get;set;}
    public string Text {get;set;}
}

List<SomeClassName> yourArray = new List<SomeClassName>();

yourArray.Add(new SomeClassName {
    Name = "abc",
    Size = 123,
    Position = 123,
    Text = "abc"
});


А вообще, как сказал @AlexP11223, посмотрите в сторону Entity Framework.
Ответ написан
Комментировать
newross
@newross
Product owner
@AlexP11223 верно написал. Если же не хочется использовать ORM, а только лишь ADO.NET, то поля записи необходимо будет присвоить свойствам объекта. Сами же объекты можно хранить в списке.
Простейший пример:
public class Sample
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public List<Sample> GetSamples()
{
    var result = new List<Sample>();
    using (var connection = new SqlConnection("connection_string"))
    {
        var command = connection.CreateCommand();
        command.CommandText = "SELECT id, name FROM .....";
        connection.Open();
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                result.Add(new Sample
                {
                    Id = reader.GetInt32(0),
                    Name = reader.GetString(1)
                });
            }
            reader.Close();
        }
        connection.Close();
    }
    return result;
}
Ответ написан
@gleb_kudr
Если будете выбирать произвольные элементы из списка а не просто хранить, то не забудьте познакомиться кроме List с коллекциями типа HashSet и Dictionary. Бывают задачи, когда эта простая замена приводит к росту производительности в тысячи раз.
Ответ написан
martsen
@martsen
Программист-дроновод
Присоединяюсь к вышесказанному. Можно еще посмотреть в сторону Dapper, если хочется, чтобы все само "мапилось".

P.S.
Это если решили пойти путем чистого ADO.NET.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы