Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何搜索包含字符串和字节的自定义结构列表(C#)?_C#_List_Byte - Fatal编程技术网

如何搜索包含字符串和字节的自定义结构列表(C#)?

如何搜索包含字符串和字节的自定义结构列表(C#)?,c#,list,byte,C#,List,Byte,我正在尝试搜索包含以下结构的列表: struct Item { public string Name; public Byte[] Data; } static List<Item> Items = new List<item>(); struct项 { 公共字符串名称; 公共字节[]数据; } 静态列表项=新列表(); 每次我收到数据时,字节都会发生变化,必须进行更新。是否有一种方法可以搜索必须更新的项目,而不必搜索每个循环 此外,数据库速度太慢,无

我正在尝试搜索包含以下结构的列表:

struct Item
{
    public string Name;
    public Byte[] Data;
}
static List<Item> Items = new List<item>();
struct项
{
公共字符串名称;
公共字节[]数据;
}
静态列表项=新列表();
每次我收到数据时,字节都会发生变化,必须进行更新。是否有一种方法可以搜索必须更新的项目,而不必搜索每个循环

此外,数据库速度太慢,无法执行此操作-必须在内存中执行(列表不应超过1MiB)

谢谢你,林克

var targetItem=items.First(x=>x.Name==targetValue)

不过,我不确定它比foreach更快。
可能会感兴趣的是,除非最近有所改变,否则for循环比foreach循环快。

按照Matthew Watson在第一次回答中的建议,使用字典

static Dictionary<string, Byte[]> Items = new Dictionary<string, Byte[]>();

谢谢大家

使用
字典
而不是struct+列表是否可以接受?然后查找将是
O(1)
;是否可以像这样更新项目?项目[“唯一代码”]=新字节?是的,没错。如果该键不存在,将使用指定的值创建一个新条目,如果该键已存在,则使用新值更新现有值。它非常快。经过测试-非常好!如果没有targetValue,这里应该选择FirstOrDefault。在任何情况下,foreach都只是隐藏并在Linq代码中执行。为了提高性能,最好将存储更改为dictionary。dictionary更好-我在看到这个建议之前写了这个。
Items[currentItem] = GetByteFromData(data);
//and
Items.Remove(currentItem);