Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/76: Рейтинг темы: голосов - 76, средняя оценка - 4.61
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249

Использование двух массивов в одном цикле foreach

02.07.2014, 10:23. Показов 14241. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане!

Пожалуйста, подскажите. Можно ли использовать два массива разного типа, т.е. две переменные по каждой из массива в одном цикле? Первая переменная wheel и вторая переменная Tire. Нужно в процедуре сохранения подставлять переменные из массивов, так: 1) NoseWheelLH, tire1; 2)NoseWheelRH, tire2; и т.д.
Как прилепить к одному циклу? Если дописать foreach (decimal Tire in TirePressure) как указано в коде, то цикл в цикле получается.
C#
1
2
3
4
5
6
7
8
9
10
string[] wheelarray = new string[] { NoseWheelLH, NoseWheelRH, MainWheel1, MainWheel2, MainWheel3, MainWheel4, MainWheel5, MainWheel6, MainWheel7, MainWheel8 };
            decimal[] TirePressure = new decimal[] { tire1, tire2, tire3, tire4, tire5, tire6, tire7, tire8, tire9, tire10 };
            foreach (string wheel in wheelarray) 
            //foreach (decimal Tire in TirePressure)
            {
            SqlCommand WheelDataCom = new SqlCommand("INSERT INTO [WheelData] (ID_RPart,TirePressure,Date) VALUES (@PrmID_RPart,@PrmTirePressure,@PrmDate)", con);
            WheelDataCom.Parameters.AddWithValue("@PrmID_RPart", Convert.ToInt16(wheel));
            WheelDataCom.Parameters.AddWithValue("@PrmTirePressure", Tire);
            WheelDataCom.Parameters.AddWithValue("@PrmDate", WCDatedateTimePicker.Text);
            WheelDataCom.ExecuteNonQuery();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.07.2014, 10:23
Ответы с готовыми решениями:

Скажите, есть ли возможность как-нибудь сделать, чтобы в цикле foreach обрабатывались данные из двух массивов?
Скажите есть возможность как-нибудь сделать чтобы в цикле foreach обрабатывались данные из двух массивов? Ведь цикл foreach перебирает...

Использование ListBox в цикле foreach
Здравствуйте уважаемые Гуру! Нужен ваш совет Есть цикл foreach, в котором перебираются строки DataView В зависимости от...

Пожалуйста подскажите о цикле перебора массивов foreach
Не могу найти материал который бы точно изложил суть цикла перебора массива foreach Вот пример: function _Html ($path){ ...

14
Неадекват
 Аватар для freeba
1499 / 1236 / 247
Регистрация: 02.04.2010
Сообщений: 2,807
02.07.2014, 10:48
Можно попробовать как то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System;
using System.Linq;
 
namespace ConsoleApplication32
{
    class Program
    {
        static void Main(string[] args)
        {
            var strArray = new string[] { "one", "two", "three", "four", "five", "six", "seven" };
            var decArray = new decimal[] { 5, 6, 7, 8, 9, 0 };
 
 
            foreach (var item in Enumerable.Range(0, Math.Min(strArray.Length, decArray.Length)).Select(x => new { Str = strArray[x], Dec = decArray[x] }))
            {
                Console.WriteLine("{0}\t{1}", item.Str, item.Dec);
            }
 
            Console.ReadKey();
        }
    }
}
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
02.07.2014, 10:54
Лучший ответ Сообщение было отмечено ac1-caesar как решение

Решение

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
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace Ghost
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] strArray = new string[] { 
                "one", "two", "three", "four", 
                "five", "six", "seven" };
            decimal[] decArray = new decimal[] { 5, 6, 7, 8, 9, 0 };
 
            IEnumerable<Tuple<string, decimal>> seq = strArray.Zip(
                decArray,
                (str, dec) => new Tuple<string, decimal>(str, dec));
 
            foreach (Tuple<string, decimal> tuple in seq)
            {
                Console.WriteLine("{0}\t{1}", tuple.Item1, tuple.Item2);
            }
        }
    }
}
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
02.07.2014, 11:02  [ТС]
Ого как закручено... Ну, а как мне прилепить переменные на моем примере?
Так?
C#
1
2
3
4
5
foreach (Tuple<string, decimal> tuple in seq)
            {
               WheelDataCom.Parameters.AddWithValue("@PrmID_RPart",  "{0}\t{1}", tuple.Item1);
               WheelDataCom.Parameters.AddWithValue("@PrmTirePressure", "{0}\t{1}",  tuple.Item2);
            }
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
02.07.2014, 11:11
C#
1
WheelDataCom.Parameters.AddWithValue(tuple.Item1, tuple.Item2);
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
02.07.2014, 11:53  [ТС]
Петррр, так у меня то два параметра.
Так корректно?
C#
1
2
 WheelDataCom.Parameters.AddWithValue("@PrmID_RPart",  tuple.Item1); // параметр с переменной wheel
 WheelDataCom.Parameters.AddWithValue("@PrmTirePressure",  tuple.Item2); // параметр с переменной Tire
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9670 / 4823 / 762
Регистрация: 17.04.2012
Сообщений: 9,661
Записей в блоге: 14
02.07.2014, 13:05
Переделка кода freeba
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections;
 
namespace ConsoleApp
{
    internal class Program
    {
        static void Main(string[] args) {
            var strArray = new string[] 
                { "one", "two", "three", "four", "five", "six", "seven" };
            var decArray = new decimal[] { 5, 6, 7, 8, 9, 0 };
            IList collection = strArray.Length < decArray.Length
                ? (IList)strArray : (IList)decArray;
            for (int i = 0; i < collection.Count; i++) {
                Console.WriteLine("{0} : {1}", strArray[i], decArray[i]);
            }
        }
    }
}
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
02.07.2014, 15:54  [ТС]
tezaurismosis, я так и не понял как вставить в мои параметры??
Так нужно?

C#
1
2
WheelDataCom.Parameters.AddWithValue("@PrmID_RPart", strArray[i]); // параметр с переменной wheel
WheelDataCom.Parameters.AddWithValue("@PrmTirePressure",  decArray[i]); // параметр с переменной Tire
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9670 / 4823 / 762
Регистрация: 17.04.2012
Сообщений: 9,661
Записей в блоге: 14
02.07.2014, 16:15
Я и сам толком вашу задачу не понял (точнее, не понял вашего API), так что пробуйте.
Весь код здесь - как наводка по вопросу
Цитата Сообщение от ac1-caesar Посмотреть сообщение
Можно ли использовать два массива разного типа, т.е. две переменные по каждой из массива в одном цикле?
0
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
02.07.2014, 17:30  [ТС]
Хочу в процедуре вставки менять два параметра. С одним - "WheelDataCom.Parameters.AddWithValue("@ PrmID_RPart", Convert.ToInt16(wheel));" проблем нет (код ниже),
C#
1
2
3
4
5
6
7
8
9
10
string[] wheelarray = new string[] { NoseWheelLH, NoseWheelRH, MainWheel1, MainWheel2, MainWheel3, MainWheel4, MainWheel5, MainWheel6, MainWheel7, MainWheel8 };
            foreach (string wheel in wheelarray) 
            
            {
            SqlCommand WheelDataCom = new SqlCommand("INSERT INTO [WheelData] (ID_RPart,TirePressure,Date) VALUES (@PrmID_RPart,@PrmTirePressure,@PrmDate)", con);
            WheelDataCom.Parameters.AddWithValue("@PrmID_RPart", Convert.ToInt16(wheel));
            WheelDataCom.Parameters.AddWithValue("@PrmTirePressure", NLGWLHnumericUpDown.Value);
            WheelDataCom.Parameters.AddWithValue("@PrmDate", WCDatedateTimePicker.Text);
            WheelDataCom.ExecuteNonQuery();
            }
а вот с двумя не знаю как...
Можно конечно и без цикла 10 раз повторить процедуру подставляя нужные значения, но че то кажется можно цикл задействовать.

Добавлено через 1 час 5 минут
Петррр, подскажите пожалуйста, Tuple - представляет кортеж из двух компонентов или пару. А если несколько переменных, т.е. больше 2-х, тогда что спасает?
0
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,095
02.07.2014, 17:46
Я понимаю, что с foreach позаковыристей (интересней) будет, но все-таки почему бы Вам не использовать цикл
C#
1
2
3
4
5
6
for(int i=0; i<wheelarray.Length && i<TirePressure.Length; ++i)
{
string wheel=wheelarray[i];
decimal Tire=TirePressure[i];
.....
}
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
02.07.2014, 18:00  [ТС]
nedel, а не знаю как. Можете к моему примеру пристроить (для наглядности)?
0
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
02.07.2014, 18:16
Tuple - это кортеж, и засунуть туда можно до семи значений.
1
1167 / 885 / 517
Регистрация: 09.04.2014
Сообщений: 2,095
02.07.2014, 18:27
Лучший ответ Сообщение было отмечено Psilon как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
string[] wheelarray = new string[] { NoseWheelLH, NoseWheelRH, MainWheel1, MainWheel2, MainWheel3, MainWheel4, MainWheel5, MainWheel6, MainWheel7, MainWheel8 };
            decimal[] TirePressure = new decimal[] { tire1, tire2, tire3, tire4, tire5, tire6, tire7, tire8, tire9, tire10 };
for(int i=0; i<wheelarray.Length && i<TirePressure.Length; ++i)
{
string wheel=wheelarray[i];
decimal Tire=TirePressure[i];
SqlCommand WheelDataCom = new SqlCommand("INSERT INTO [WheelData] (ID_RPart,TirePressure,Date) VALUES (@PrmID_RPart,@PrmTirePressure,@PrmDate)", con);
            WheelDataCom.Parameters.AddWithValue("@PrmID_RPart", Convert.ToInt16(wheel));
            WheelDataCom.Parameters.AddWithValue("@PrmTirePressure", Tire);
            WheelDataCom.Parameters.AddWithValue("@PrmDate", WCDatedateTimePicker.Text);
            WheelDataCom.ExecuteNonQuery();
}
1
124 / 3 / 0
Регистрация: 29.07.2013
Сообщений: 249
02.07.2014, 18:30  [ТС]
Нда, ларчик просто открывался....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2014, 18:30
Помогаю со студенческими работами здесь

Foreach двух массивов
Подробно 1 массив $country Содержит подобное содержание: &quot;RU&quot;:1700,&quot;AF&quot;:800 Код страны и числовое значение 2 массив...

Изменение элементов 2х массивов в одном цикле
Ребята, подскажите пожалуйста - нигде не найду в интернете примера, как в Mathcad менять значения элементов массива в цикле - все примеры,...

Перебор двух массивов в foreach
Доброго времени суток, есть два строковых массива с одинаковым количеством элементов и метод, который принимает строковые массивы в...

Вывод двух разных массивов API в один foreach
Доброго времени суток, коллеги. Подскажите, как сделать такой же вывод как здесь designerboard.co, только на PHP. В общем...

Вывести в одном цикле результат двух запросов
Как 2 SQL-запроса: на выборку отдельно из таблицы ... и из таблицы ... вывести в одном цикле


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru