filtrer un tableau en C#
J'ai un tableau d'objets (Car [] par exemple) et il y a une propriété IsAvailable sur l'objet
Je veux utiliser le tableau complet (où IsAvailable est true pour certains éléments et false pour d'autres) comme entrée et retourner un nouveau tableau qui inclut uniquement les éléments qui ont IsAvailable = true.
6 réponses
Si vous utilisez C # 3.0 ou mieux...
public Car[] Filter(Car[] input)
{
return input.Where(c => c.IsAvailable).ToArray();
}
Et si vous n'avez pas accès à LINQ (vous utilisez une ancienne version de. NET) ...
public Car[] Filter(Car[] input)
{
List<Car> availableCars = new List<Car>();
foreach(Car c in input)
{
if(c.IsAvailable)
availableCars.Add(c);
}
return availableCars.ToArray();
}
Étonnamment, cette question manque de la réponse la plus naturelle et efficace: Array.FindAll
Car[] availableCars = Array.FindAll(cars, c => c.IsAvailable);
Si c'était un List<Car>
il est également un List.FindAll
.
Moyen le plus simple:
Car[] cars = //...
Car[] filtered = cars.Where(c => c.IsAvailable).ToArray();
Peut-Être Plus Efficace:
Car [] cars = //...
List<Car> filteredList = new List<Car>();
for(int i = 0; i < cars.Length; i++)
{
if(cars[i].IsAvailable)
filteredList.Add(cars[i]);
}
Car[] filtered = filteredList.ToArray();
Une solution simple consiste à créer un nouveau tableau, à parcourir le tableau d'entrée et à ajouter uniquement les éléments qui satisfont vos conditions au nouveau tableau, et à renvoyer le nouveau tableau:
List<Car> available = new List<Car>();
foreach (Car c in cars) {
if (c.IsAvailable) {
available.add(c);
}
}
//Here you can either just return the list, or create an array from it.
var available = from c in cars where c.IsAvailable == true select c;
Ou
var available = cars.Where(c => c.IsAvailable == true);
Un tableau est un tableau de filtres lorsqu'il remplit les conditions suivantes:
- si 9 existe dans la liste 13 doit également exister
- Si 7 existe dans la liste, alors 11 ne doit pas exister
Solution
int[] a = {7 , 72, 6, 13, 9 };
int i, k = 0, l = 0, m = 0, n = 0;
for (i = 0; i < a.Length; i++)
{
if (a[i] == 9)
{
k = 1;
}
}
for (i = 0; i < a.Length; i++)
{
if (a[i] == 13)
{
l = 1;
}
}
for (i = 0; i < a.Length; i++)
{
if (a[i] == 7)
{
m = 1;
}
}
for (i = 0; i < a.Length; i++)
{
if (a[i] == 11)
{
n= 1;
}
}
if ((k == 1 && l == 1) && (m == 1 && n == 1))
{
Console.WriteLine("is not filter array");
}
else if (k == 1 && l!= 1)
{
Console.WriteLine("is not filter array");
}
else if (m ==1 && n==1)
{
Console.WriteLine("is not filter array ");
}
else
Console.WriteLine("is filter array");
Console.WriteLine("the element of an array is:");
for (i = 0; i < a.Length; i++)
{
Console.WriteLine(a[i]);
}
Comme je pense que ce code fonctionne sûrement si vous avez besoin de tester un tableau.
reta seboka ambo universtity woliso campuse département de technologie de l'information.!!