Подтвердить что ты не робот

Фильтровать массив в С#

У меня есть массив объектов (например, Car []) и на объекте

есть свойство IsAvailable.

Я хочу использовать полный массив (где IsAvailable является истинным для некоторых элементов и false для некоторых других) в качестве ввода и возвращает новый массив, который включает только те элементы, которые имеют IsAvailable = true.

4b9b3361

Ответ 1

Если вы используете С# 3.0 или лучше...

public Car[] Filter(Car[] input)
{
    return input.Where(c => c.IsAvailable).ToArray();
}

И если у вас нет доступа к LINQ (вы используете старую версию .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();
}

Ответ 2

Удивительно, но этот вопрос не имеет наиболее естественного и эффективного ответа: Array.FindAll

Car[] availableCars = Array.FindAll(cars, c => c.IsAvailable);

если он был List<Car>, также существует List.FindAll.

Ответ 3

Самый простой способ:

Car[] cars = //...
Car[] filtered = cars.Where(c => c.IsAvailable).ToArray();

Возможно более эффективное:

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();

Ответ 4

Простым решением является создание нового массива, цикл через входной массив и добавление только тех элементов, которые удовлетворяют вашим условиям новому массиву, и возвращают новый массив:

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.

Ответ 5

var available = from c in cars where c.IsAvailable == true select c;

или

var available = cars.Where(c => c.IsAvailable == true);

Ответ 6

массив является фильтром, когда он удовлетворяет следующим условиям:

  • если 9 существует в списке 13, также должно существовать
  • если 7 существует в списке, то 11 не должно существовать

решение

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]);
}

Как я думаю, этот код, безусловно, работает, если вам нужно проверить массив.
 reta seboka ambo универсальный woliso campuse отдел информации TECH.!!