为了账号安全,请及时绑定邮箱和手机立即绑定

如何在c#中检查列表中的特定项目

如何在c#中检查列表中的特定项目

PHP
慕村225694 2024-01-20 16:07:25
目前,我正在开发一个由 200 个传感器节点组成的网络模拟器。在我的代码中,我需要每个节点向其邻居发送 hello 数据包。在上一步中,我编写了一段代码,将 hello 消息从特定节点广播到其邻居(它们是传感器节点)。现在,我需要这些传感器节点将其队列中的 hello 数据包重新转发给其邻居。我需要检查传感器节点的队列是否已经有一个 hello 数据包,以便将其重新转发到该传感器节点的邻居。。。例如,我创建了这样的 hello : Packet hello = new Packet(CNs[i].cnID, i, i, 0, CNs[i].cnDepth, DateTime.Now, "Hello, I am a Courier node near of you");数据包声明如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AUV_Topology{    class Packet        {            public int senderID;        public int nextID;        public int recieverID;        public int packetSequenceNum;        public int depth;        public DateTime sendingTime;        public String data;        public Packet(int sID, int nID, int rID, int pSecNum, int depth,DateTime sTime, String data)            {                this.senderID = sID;            this.nextID = nID;            this.recieverID = rID;            this.packetSequenceNum = pSecNum;            this.depth = depth;            this.sendingTime = sTime;            this.data = data;           }        }}为了确保传感器节点队列有从另一个节点收到的 hello 数据包,我使用“foreach”并检查列表中的每个数据包是否包含“Hello,我是您附近的 Courier 节点”...不幸的是,我尝试使用SNs[i]queue.contains("Hello, I am a Courier node near of you");其中SN[i]是传感器节点数组,队列是声明如下的属性:public List<Packet> queue = new List<Packet>();但我收到语法错误:参数 1:无法从“string”转换为“AUV_Topology.Packet”AUVs_TOPOLOGY我怎样才能做到这一点?这是一个可能的解决方案吗: for(int j=0; j < NodeNum; j++) {      if (SNsNighbors[i, j] == 1)      {         String temp = SNs[i].queue.ToString();         if (temp.Contains("Hello"))         {         }          }      }
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

如果queue是数据包列表,并且您想知道这些数据包中是否有一个data是 hello 消息,请确保您已导入 LINQ 并执行以下操作:

SNs[i].queue.Any(pkt => pkt.data == "Hello, I am a Courier node near of you");

如果任何数据包具有该数据,则返回 bool true。如果要检索包含此数据的第一个数据包,请将 Any 替换为 First。如果多个数据包都有它并且您希望所有数据包都将其交换为Where

附:在 C# 中,我们以首字母大写字母命名公共成员,例如 Data、Queue 等,并且我们更喜欢公共属性而不是公共变量。此外,如果使用 FIFO 队列来建模队列更合适,则 System.Collections.Generic 命名空间与 List 一起具有其中之一


查看完整回答
反对 回复 2024-01-20
  • 1 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信