MySQL таблица в список - PullRequest
       2

MySQL таблица в список

1 голос
/ 21 декабря 2011

я использую c # , winform и mysql база данных.
И у меня есть таблица t_class , как показано ниже

id        class       group      name        surname
1         10          1          joe         philips
2         10          2          maya        edwards
3         10          4          michael     collins
4         11          3          sasha       ivanko
5         10          2          araz        kurio
etc...

и у меня есть класс MyClass вот так

class MyClass
{
    int class;
    int group;
    string name;
    string surname;
}

есть список

List<MyClass>  myclass = new List<MyClass>();

Подскажите пожалуйста,
как я могу загрузить данные из t_table в этот список.

Я бы хотел использовать LINQ там.и не зацикливаться в датируемых строках для этого.

Ответы [ 3 ]

1 голос
/ 21 декабря 2011

Ну, LINQ to SQL было бы идеальным выбором, но, поскольку у вас есть MySQL, у вас не будет встроенной поддержки в этом случае.Хотя вы можете изучить Linq Provider для MySql

Другой вариант может заключаться в извлечении DataTable из базы данных с использованием SQL Query.Затем выполните итерацию по извлеченным DataTable и для каждой строки создайте новый экземпляр MyClass и заполните значения из значений столбцов DataTable

  //pseudocode
        List<MyClass> list = new ...

        foreach(DataRow row in retrievedDataTable)
        {
            MyClass instance = new MyClass();
            instance.ID = row["ID"];
            similarly for rest of the properties

            list.Add(instance);
        }
1 голос
/ 21 декабря 2011

Вы должны использовать Linq-Sql или модель Entity Data.В противном случае вы должны заполнить DataTable с использованием классов провайдера данных (DataAdapter).

Добавление открытых свойств или конструктора аргумента.

class MyClass
{
    public int Class {get;set;}
    public int Group {get;set;}
    public string Name {get;set;}
    public string SurName {get;set;}
}

var result = from row in dt.AsEnumerable()
                      select new MyClass
                       {
                        Class=row.Field<int>("class"),
                        Group=row.Field<int>("group"),
                        Name=row.Field<string>("name"),
                        SurName=row.Field<string>("surname")
                        };
0 голосов
/ 21 декабря 2011

Также вы можете использовать DataReader для него

Так что вы можете использовать linq для извлечения данных.

 public static IEnumerable<T> GetEntity<T>() where T : new ()
    {
        using (SqlDataReader reader ...)
        {
            while (reader.Read())
            {
                 T t = new T();

                 var values = new object[reader.FieldCount];
                 reader.GetValues(values);

                 for (var i = 0; i < values.Length; i++)
                 {
                     t.GetType().GetProperty(reader.GetName(i)).SetValue(t, values[i], null);
                 }

                 yield return t;
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...