StaDi
@StaDi
Курьер в it отделе

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

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

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


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

Спасибо!
  • Вопрос задан
  • 11052 просмотра
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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