如何在调用 <type>List.any() 时获取对象



我有一个类'Cpu'的列表,Cpu类是这样的:

public class Cpu
{
public string SerialNum{get;set;}
public string BandName{get;set;}
public string Status{get;set;}
...
}

我有一个cpu列表,list cpulist;我想找出状态不健康的cpu所以我使用了下面的代码

foreach(Cpu cpu in cpulist) {
if (cpu.status!='healthy') {
saveinfo(cpu's information);
}
}

,但我知道一个简单的方法,像下面的代码:

if (cpulist.Any(cpu => cpu.Status != "Healthy")) {
//I can find whather a cpu is unhealty
//but I want to save the unhealty cpu's information,I don't know 
//which cpu has issues,and **my questions is how to find the specific cpu 
//with unhealty status**
}

我的意思是,当我调用List.Any.

时,我是如何获得cpu对象的?

如果集合中至少有一项符合您的条件,则Any方法返回true,否则返回false。所以它本身不返回任何项。

在您的示例中,您希望对匹配的项执行操作,因此Any不是正确的方法。

您可以使用FindAllWhere

FindAllList<T>的扩展方法,它返回一个包含所有匹配项的新List<T>。你可以这样使用:

foreach (var foundItem in cpulist.FindAll(delegate (Cpu obj) { return !obj.Column.Status("Healthly"); }))
{
... 
}

或者您可以使用LinqWhere方法。
在任何实现IEnumerable的类型上执行,因此它返回一个IEnumerable的实例。

你可以这样用。

foreach (var foundItem in cpulist.Where(cpu => !cpu.Status.Equals("Healthy")))
{
...
}

最新更新