在C#中过滤数组
我有一个对象数组(例如Car []),并且对象上有一个IsAvailable属性
我想使用完整数组(其中IsAvailable对于某些项为true而对于其他项为false)作为输入并返回一个新数组,其中仅包含具有IsAvailable = true的项。
如果你使用C#3.0或更好……
public Car[] Filter(Car[] input) { return input.Where(c => c.IsAvailable).ToArray(); }
如果您无法访问LINQ(您使用的是旧版本的.NET)…
public Car[] Filter(Car[] input) { List availableCars = new List (); foreach(Car c in input) { if(c.IsAvailable) availableCars.Add(c); } return availableCars.ToArray(); }
令人惊讶的是,这个问题缺乏最自然和最有效的答案: Array.FindAll
Car[] availableCars = Array.FindAll(cars, c => c.IsAvailable);
如果它是List
那么还有一个List.FindAll
。
最简单的方法:
Car[] cars = //... Car[] filtered = cars.Where(c => c.IsAvailable).ToArray();
可能更高效:
Car [] cars = //... List filteredList = new List (); for(int i = 0; i < cars.Length; i++) { if(cars[i].IsAvailable) filteredList.Add(cars[i]); } Car[] filtered = filteredList.ToArray();
一个简单的解决方案是创建一个新数组,遍历输入数组并仅将满足条件的项添加到新数组,并返回新数组:
List available = new List (); 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;
要么
var available = cars.Where(c => c.IsAvailable == true);
数组是满足以下条件的filter数组:
- 如果列表中存在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]); }
我认为如果你需要测试一个数组,这个代码肯定会起作用。
lob seboka ambo universtity woliso campuse信息部门TECH。!!
- 在C#中创建和使用自定义List
- LINQ到对象的位置和时间?
- ASP.NET MVC中基于文档的安全性
- WebServicesClientProtocol在安全标头中将EncodingType添加到Nonce
- 如何在使用mongo csharp插入后获取rcently插入文档的_id?
- 在ASP.NET Core 2中dependency injection相同类型的多个实例
- Excel Interop的Worksheet.UsedRange.Rows在Spreadsheet Light中的模拟是什么?
- object引用未保存的瞬态实例在刷新之前保存瞬态实例
- C#有类似PHP的mb_convert_encoding()吗?