【发布时间】:2021-08-13 03:27:38
【问题描述】:
我有一个'Cpu'类的列表,cpu类是这样的:
public class Cpu
{
public string SerialNum{get;set;}
public string BandName{get;set;}
public string Status{get;set;}
...
}
我有一个 Cpus 列表,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 对象。
【问题讨论】:
-
cpulist.Where(cpu => cpu.Status != "Healthy") -
@JLRishe 哦!感谢您指出了这一点。我正在查看使用
Any的代码,并认为 OP 想要 any 不健康的 CPU。他们缺乏复数也让我觉得只有一个。现在我重新阅读了这个问题并看到他们对 foreach 循环做了什么,我对 OP 想要什么感到有点困惑。 -
@Sweeper 我同意这很令人困惑,但似乎他们的目标是记录有关所有坏 CPU 的信息(这是
foreach循环正在做的事情),但他们发现了 LINQ 并希望充分利用它。 -
非常感谢,我发现这段代码可以用来获取不健康cpus的列表。
-
cpulist.Where(cpu => !cpu.Status.Equals("Healthy", StringComparison.InvariantCulture)).Select(bad => new Action(()=> saveinfo(bad))).AsParallel().ForAll(a => a.Invoke());