同时检查字符串列表中项目的所有值

时间:2016-01-14 16:44:24

标签: c# .net list

我有一个程序,只要有来自它的“信号”,就会突出显示服务器的名称。我有一个包含服务器信号的值列表,它每秒都会更新。我希望能够在下一个“tick”之前一次检查整个列表,然后返回那时有信号的服务器,以便我可以突出显示它们。

我有以下代码来确定哪个服务器具有MOST信号,哪个服务器具有信号最长的时间。你认为我想做的事情会比这更简单,但出于某种原因,我迷失了。这是代码(完美地运行) -

var mostSignals = serverInfo.Aggregate(emptyServer, (s1, s2) =>
{
    var s1Signals = int.Parse(s1?.Signals ?? "0");
    var s2Signals = int.Parse(s2?.Signals ?? "0");
    return s1Signals < s2Signals ? s2 : s1;
});

var longestHold = serverInfo.Aggregate(emptyServer, (s1, s2) =>
{
    var s1Hold = TimeSpan.Parse(s1?.LongestHold ?? "00:00");
    var s2Hold = TimeSpan.Parse(s2?.LongestHold ?? "00:00");
    return s1Hold < s2Hold ? s2 : s1;
});

在浏览了一些文章之后,我找到了一条似乎正确的道路,但要么我做错了,要么就是我认为不是 - Check all values in string[] for length?

我现有的代码 -

var anySignals = serverInfo.Any(x => x.Signals != "0");

但是,如果任何服务器上都有信号,我可以收集到的只会返回true或false。

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

你想要的是:

var anySignals = serverInfo.Where(x => x.Signals != "0");

这将返回Signals不等于字符串“0”的所有服务器。

然后,您可以根据需要循环显示所有名称的结果。