【问题标题】:Fastest method to get data in struct array在结构数组中获取数据的最快方法
【发布时间】:2013-09-26 14:51:42
【问题描述】:

我编写了一个 C# 程序,用于管理不同的文本文件并检索数据、比较字段等。

我的程序是将 txt 文件中的数据存储到具有不同字段(例如文件名、文件长度、包含的行等)的结构数组中。例如一个文件可以是

    Name1    ID1    Lenght1    Path1    User1
    Name2    ID1    Lenght2    Path1    User4
    Name3    ID2    Lenght2    Path3    User1
    ...

我将这些字段放在一个结构数组中

           NAME     ID     LENGHT     PATH     USER

    [0]    Name1    Id1    Lenght1    Path1    User1
    [1]    Name2    Id1    Lenght2    Path1    User4
    [2]    Name3    Id2    Lenght2    Path3    User1
    ...

而且我必须检索具有特定角的整行,例如,我想要所有具有 NAME=Name2 和 PATH=Path1 的行。在前面的示例中,我检索用 [1] 索引的结构。

当要分析的数据越来越多时,我需要尽快获取此类数据。

实际上这个想法是有一个循环并比较结构中的所有字段并保存尊重角的行(例如 NAME=Name2 AND PATH=Path1)。不幸的是,这种方法太长了,不能接受。你有什么建议吗?

【问题讨论】:

  • 一方面,使用结构体来处理大数据结构会导致速度变慢,为什么要使用结构体而不是类?
  • “想法是为那个 cicles 做一个” ??
  • 如果文本文件采用制表符或逗号分隔的分隔格式,则可以将它们作为 Odbc 数据源进行查询。例如,请参阅stackoverflow.com/questions/10624286/…

标签: c# arrays struct


【解决方案1】:

假设您有一个自定义类型的数组,您可以使用 LINQ 过滤您的数组:

var items = yourArray
    .Where(x => x.Name == "Name2" && x.Path == "Path2");

假设 yourArray 类似于:

public class MyType
{
    public string Name { get; set; }
    public string ID { get; set; }
    public string Path { get; set; }
    public string User { get; set; }
}

然后你可以从你的文本文件中读取并输入你的类型。

【讨论】:

  • 非常感谢,看来可以了。另一个问题,如何使用变量项来获取其余数据? BR
  • @user2819934 我不确定你在问什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 2014-03-13
  • 2021-08-25
  • 1970-01-01
  • 2016-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多