gpt4 book ai didi

c# - .Take(5) 在 ObservableCollection 上返回计数 0

转载 作者:行者123 更新时间:2023-11-30 22:39:20 24 4
gpt4 key购买 nike

我正在尝试使用 LINQ 从 ObservableCollection<PingReply> 返回前 5 个 ping 结果但由此产生的 IEnumerable计数为 0。

谁能解释为什么 lastFive.Take(5) 时,下面代码中的对象返回计数 0适用于 PingReplies

发送 ping 时,PingReplies集合获取 ObservableCollection 中的那个对象

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.NetworkInformation;
using System.Collections.ObjectModel;

namespace XXX.ServerMonitor.Servers
{
class WindowsServer : IServer
{
public WindowsServer(string address)
{
this.Address = address;
PingReplies = new ObservableCollection<PingReply>();
PingReplies.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(PingReplies_CollectionChanged);
}

void PingReplies_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
{
IEnumerable<PingReply> lastFive = PingReplies.Take(5);
if (lastFive.Where(a => a.Status != IPStatus.Success).Count() == 5)
{
// 5 failed attempts
// Server may be down
Console.WriteLine(Address + " may be down");
}
}
}

public ObservableCollection<PingReply> PingReplies { get; set; }

PingReply IServer.Ping()
{
PingReply reply = Utils.Ping.Send(this.Address);
PingReplies.Add(reply);
return reply;
}

public string Address { get; set; }
}
}

enter image description here

编辑:实际上传的代码

最佳答案

如果集合中没有数据,Take 不返回任何项目。如果周围确实有一些数据,那么您一定是在没有向我们展示的代码中犯了一些错误。记住:select 没有损坏......

顺便说一下,还有一个Reverse,而不是Skip(Count - x).Take(x)

关于c# - .Take(5) 在 ObservableCollection 上返回计数 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5791317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com