我有一个对象数组(例如Car [])并且对象上有一个IsAvailable属性
我想使用完整数组(其中IsAvailable对于某些项为true而对于其他项为false)作为输入并返回一个新数组,其中仅包含具有IsAvailable = true的项。
答案 0 :(得分:56)
如果你正在使用C#3.0或更好......
using System.Linq;
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();
}
答案 1 :(得分:17)
令人惊讶的是,这个问题缺乏最自然和最有效的答案:Array.FindAll
Car[] availableCars = Array.FindAll(cars, c => c.IsAvailable);
如果是List<Car>
,则还有List.FindAll
。
答案 2 :(得分:1)
最简单的方法:
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();
答案 3 :(得分:1)
一个简单的解决方案是创建一个新数组,遍历输入数组并仅将满足条件的项添加到新数组中,并返回新数组:
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.
答案 4 :(得分:0)
var available = from c in cars where c.IsAvailable == true select c;
或者
var available = cars.Where(c => c.IsAvailable == true);
答案 5 :(得分:-5)
当满足以下条件时,数组是过滤器数组:
解决方案
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]);
}
我认为如果您需要测试阵列,这段代码肯定有效 零售seboka ambo universtity woliso campuse信息部门TECH。!!