#c# #foreach
#c# #foreach
Вопрос:
У меня есть список из 2 строк.
var justiceCourtName = formCollection["JusticeCourtName"];
var courtId = formCollection["CourtID"];
var justiceCourtNameList = justiceCourtName.Split(',');
var courtIdList = courtId.ToList();
justiceCourtNameList значения ниже:
"New York"
"Paris"
Значения courtIdList ниже:
"10.33"
"43.15"
Мой вопрос:
После этого мне нужно использовать foreach для justiceCourtNameList и courtIdList , из justiceCourtNameList в Name (ниже) и из courtIdList в lawCourtId один за другим.
Но я не знаю, как я могу установить justiceCourtNameList и courtIdList один за другим в new LawCourt ?
var lawCourt = new LawCourt { JusticeCourtID = lawCourtId, Name = lawCourtName };
ServiceLibraryHelper.LawServiceHelper.UpdateLawCourt(lawCourt); // Update
Комментарии:
1. редактирование в порядке, пожалуйста, помогите, спасибо
2. Вы пытаетесь получить каждую комбинацию
justiceCourtNameList
иcourtIdList
или что-то еще? Вопрос далеко не ясен.3. как я могу использовать множественный foreach спасибо
4. если количество nameList и idList одинаковы, вы можете использовать цикл for …
5. «Как я могу …»: существует несколько вариантов «использовать несколько
foreach
циклов», что имеет смысл, зависит от того, что вы пытаетесь сделать. Но это не ясно (конечно, иногда кто-то угадывает правильно).
Ответ №1:
Если я правильно понял ваш вопрос, вам нужен метод Zip
расширения:
var results = courtIdList
.Zip(justiceCourtNameList,
(lawCourtId, lawCourtName) =>
new LawCourt
{
JusticeCourtID = lawCourtId,
Name = lawCourtName
)};
Он перечисляет списки параллельно и связывает текущий элемент из первого списка с текущим элементом из второго. Лямбда-выражение указывает, что возвращать в выходной последовательности, на основе пары элементов из входных последовательностей.
Ответ №2:
Enumerable.Zip
Возможно, это может послужить вашей цели (ссылка MSDN):
int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };
var numbersAndWords = numbers.Zip(words, (first, second) => first " " second);
foreach (var item in numbersAndWords)
Console.WriteLine(item);
// This code produces the following output:
// 1 one
// 2 two
// 3 three
Ответ №3:
Используйте не foreach
operator, а for
operator . Перед этим убедитесь, что оба массива имеют одинаковую длину.
List<string> justiceCourtNameList = ...
List<double> courtIdList = ...
if(justiceCourtNameList.Count != courtIdList.Count) {
throw new ArgumentException("justiceCourtNameList and courtIdList must have the same length");
}
for(int i=0; i<justiceCourtNameList.Count; i ) {
string justiceCourtName = justiceCourtNameList[i];
double courtId = courtIdList[i];
// DO HERE WHATEVER YOU WANT HERE
}
Двойная синхронная итерация с foreach
невозможна.