我有一个类'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
不是正确的方法。
您可以使用FindAll
或Where
FindAll
是List<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")))
{
...
}