Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
4 / 4 / 5
Регистрация: 30.09.2013
Сообщений: 82

Одно значение в List из Select

04.06.2015, 02:06. Показов 1661. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Есть бд с таблицей Food
В нем есть 2 фрукта яблоко и груша.
Почему то когда while(dr.Read()) читает новую строку, он изменяет значение уже добавленной строки на новую
и у меня в листе вместо Яблоко,Груша получается 2 Груши.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.ComponentModel;
 
namespace CatandDog
{
    public partial class Form1 : Form
    {
        public static string connectionString = @"Data Source=(localdb)\v11.0;AttachDbFilename='C:\Users\Swich\Documents\Visual Studio 2015\Projects\CatandDog — копия\CatandDog\App_Data\dbContext.mdf';Integrated Security=True";
 
        public class Food
            {
            public int ID { get; set; }
            public string Name { get; set; }
            public DateTime DateOfShelfLife { get; set; }
            public int IdType { get; set; }
            public int IdTaste { get; set; }
            public int IdContainer { get; set; }
            public string ShelfLife
            {
                get { return DateOfShelfLife.Subtract(DateTime.Now).ToString(); }
            }
       
        }
        public class FoodType
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
        public class FoodTaste
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
        public class Container_
        {
            public int ID { get; set; }
            public string Name { get; set; }
        }
        List<Food> foods = new List<Food>();
        List<FoodTaste> foodTastes = new List<FoodTaste>();
        List<FoodType> foodTypes = new List<FoodType>();
        List<Container_> containers = new List<Container_>();
        public Form1()
        {
            using (SqlConnection cn = new SqlConnection())
            {
                cn.ConnectionString = connectionString;
                cn.Open();
                string query = "Select * from Foods";
                SqlCommand myCommand = new SqlCommand(query, cn);
                SqlDataReader dr = myCommand.ExecuteReader();
 
                Food f = new Food();
                while (dr.Read())
                {
                    f.ID = Int32.Parse(dr[0].ToString());
                    f.Name = dr[1].ToString();
                    f.DateOfShelfLife = DateTime.Parse(dr[2].ToString());
                    f.IdType = Int32.Parse(dr[3].ToString());
                    f.IdTaste = Int32.Parse(dr[4].ToString());
                    f.IdContainer = Int32.Parse(dr[5].ToString());
                    foods.Add(f);
                }
                dr.Close();
                query = "Select * from FoodTastes";
                myCommand = new SqlCommand(query, cn);
                dr = myCommand.ExecuteReader();
                FoodTaste foodTaste = new FoodTaste();
                while (dr.Read())
                {
                    foodTaste.ID = Int32.Parse(dr[0].ToString());
                    foodTaste.Name = dr[1].ToString();
                    foodTastes.Add(foodTaste);
                }
                dr.Close();
                query = "Select * from FoodTastes";
                myCommand = new SqlCommand(query, cn);
                dr = myCommand.ExecuteReader();
                FoodType foodType = new FoodType();
                while (dr.Read())
                {
                    foodType.ID = Int32.Parse(dr[0].ToString());
                    foodType.Name = dr[1].ToString();
                    foodTypes.Add(foodType);
                }
                dr.Close();
                query = "Select * from Containers";
                myCommand = new SqlCommand(query, cn);
                dr = myCommand.ExecuteReader();
                Container_ c = new Container_();
                while (dr.Read())
                {
                    c.ID = Int32.Parse(dr[0].ToString());
                    c.Name = dr[1].ToString();
                    containers.Add(c);
                }
                cn.Close();
 
            }
 
            InitializeComponent();
        }
 
        private void BindGrid()
        {
            dataGridView1.AutoGenerateColumns = true;
            BindingList<Food> foodsBind = new BindingList<Food>(foods); // <-- BindingList
            //Bind BindingList directly to the DataGrid, no need of BindingSource
            dataGridView1.DataSource = foodsBind;
}
 
        private void button1_Click(object sender, EventArgs e)
        {
            BindGrid();
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2015, 02:06
Ответы с готовыми решениями:

List<> - разные экземпляры, одно значение
class SuppFunc { //... } private List&lt;SuppFunc&gt; SF; class { public DoSomeWork(List&lt;SuppFunc&gt; sf) { ...

Оптимизировать запрос SELECT исключив одно условие CASE
Коллеги, не могу найти способ проще написать запрос. Вообщем необходимо в MyTable_1 вставить три поля Field1, Field2, Field3. Первое поле я...

Как вывести одно значение из массива list? Лучше использовать итератор или как-то по другому?
Здравствуйте! Что бы вывести одно значения из массива list нужно использовать итератор или можно как то по другому?

1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
04.06.2015, 09:59
Цитата Сообщение от maukur Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
9
10
11
                Food f = new Food();
                while (dr.Read())
                {
                    f.ID = Int32.Parse(dr[0].ToString());
                    f.Name = dr[1].ToString();
                    f.DateOfShelfLife = DateTime.Parse(dr[2].ToString());
                    f.IdType = Int32.Parse(dr[3].ToString());
                    f.IdTaste = Int32.Parse(dr[4].ToString());
                    f.IdContainer = Int32.Parse(dr[5].ToString());
                    foods.Add(f);
                }
Вы создали перед циклом один объект, а в цикле постоянно изменяете его свойства.
Создавайте объект внутри цикла.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2015, 09:59
Помогаю со студенческими работами здесь

Как изменить значение одного select-а при изменении другого select-а?
Добрый день! Подскажите как изменить значение select при изменении другого select. первый: &lt;select id=&quot;options&quot;&gt; ...

Изменить значение select при выборке другого select
Допустим если выбираем Second то во втором select должна выбраться 10 как можно реализовать это правильнее? &lt;form...

Отображение данных из бд в select list
Доброго времени суток, как отобразить данные из бд в select list?

Выбрать из List<string> только одно поле
List &lt;string&gt; &quot;{ LeagueName = AFC - Champions League Corners, Id = 9596 }&quot; выбрать только поле Id помогите pls не получается создать...

Синхронизировать input type text с Select List
Добрый день ув. пользователи! Подскажите пожалуйста, как правильно сделать, что бы то, что выбираешь в Select List подтягивалось в input...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru