内存表数据结构

8
我想建立一个内存表数据结构,有4个列,这样我就可以根据任意组合的列查找值(例如使用linq)。 是否有内置的数据类型可用于此,或者我必须自己创建一个(显然我不能)?
8个回答

6
除非你有特定的想法,否则我建议声明一个拥有4个属性、具有合适名称和类型的类型,例如:
public class SomethingSuitable {
    public int Foo {get;set;}
    public string Bar {get;set;} 
    public DateTime Blap {get;set;}
    public float Blip {get;set;} 
}

并根据需要使用任何列表/数组/字典等,或者只需

data.Single(x => x.Bar == "abc");

etc.


是否有索引的概念/某种方式来改善对集合中特定字段的查询?我的猜测是,您需要创建字典,其键由查询字段组成,结果是相关基础对象的引用;但这并不像简单地说“此集合保存这些对象;我想优化查询的属性是这些属性”那样干净。 - JohnLBevan

4

3
如果您使用 .Net Framework 4.0,您可以使用 Tuple!
请看这里: C# 4.0 中的 Tuple

3

我想你可能希望使用类似于 List<Tuple<T1,T2,T3,T4>> 这样的东西。


2

太快了,谢谢。我曾经认为DataTable只适用于数据库和相关内容。 - Steven


1

怎么简单地说:

var dataStructure = new[] {
    new { col1 = "something", col2 = "something else", col3 = 12, col4 = true },
    new { col1 = "ha", col2 = "ha ha", col3 = 356, col4 = false },
    new { col1 = "grrr", col2 = "grr grr", col3 = 213, col4 = true }
};

1
你可以使用一个 DataTable 或者填充一个符合你需求数据类型的 List<FourColClass>FourColClass 是一个具有属性作为列的类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接