Porównanie warunkowe dwóch list

0

Mam dwie listy: obiect_list oraz bools tej samej długości.
To co chciabym osiągnąć to: przeglądam każdy obiekt, i jeżeli odpowiadający mu numer iteracji w "bools" jest prawdziwy to wykonuję jakiś tam kod.
Problem rozwiązałem, ale kod nie jest elegancki:

//zmieniam liste na tablice
int array_bool[19];  
foreach (bool c in bools)
{
   if (c == true)
   { array_bool[i] = 1; }
   else { array_bool[i] = 0; }
}
//odczytuje iterację tablicy i odpowiadającą jej wartość:
int count = 0;
foreach (var d in object_list) 
   {
   if (array_bool[count-1] == 1)
      {
         //wykonuj kod
      }
   count ++;
   } 

Pytanie czy da się jakoś prościej, bez konwersji listy do tablicy?

0

A czemu tego nie możesz załatwić w pierwszej pętli? Po co jakieś zapisywania do array_bool skoro możesz sobie zrobić licznik do indeksów w pierwszej pętli?

0

Coś ty tu namodził :) ?? Przecież to nie ma prawa działać. W drugim foreachu odwołujesz się do ujemnego indexu tablicy.
Może o takie coś ci chodziło ? :

for(int i=0;i<object_list.Count;i++)
{
if(bools[i] == true) 
   object_list[i] = ////cośtam
}
0
   object_list[i] = ////cośtam

Nie rozumiem tego zapisu...

object_list[i] = load_data(var a, var b);

Tak by to miało wyglądać?

1

Ale skąd mamy wiedzieć jak to ma wyglądać? Nie podałeś tego kodu w pierwszym poście.

0

Skoro listy są takiej samej długości to można zrobić jednym for'em. Tylko nie wiem czy to zdanie jeżeli odpowiadający mu numer iteracji w "bools" jest prawdziwy oznacza dokładnie to co napisałem poniżej.

for(int i = 0; i < bools.Count; i++)
{
	if(bools[i] == another_list[i])
	{
		// Do sth...
	}
}

Nie wiem... elementy listy mają być równe pod tym samym numerem? Co to znaczy, że numer w iteracji jest prawdziwy?

1 użytkowników online, w tym zalogowanych: 0, gości: 1