使用查询结果填充多值字典

时间:2011-08-08 08:06:56

标签: c# .net .net-3.5 collections generics

我正在通过SQL查询检索五列。在检索到的列中,我有一个 RecordID 列,它应该作为字典的

我指的是在StackOverflow上发布的解决方案:C# Multi-Value Dictionary,但根据我的情况,我无法有效使用它。

我想存储查询的所有行,但RecordID列也应该作为字典元素的键。我想要这样的东西:

Dictionary<RecordID, Entire columns of the current row for this RecordID>

我认为另一种选择是使用数组,例如:

Dictionary<key,string[]>

但我想用任何超快的方式。

2 个答案:

答案 0 :(得分:1)

使用Lookup - 您对数据没有多说,但您可能需要一些简单的内容:

var lookup = list.ToLookup(x => x.RecordID);

当然,ToLookup有重载可以让你做其他事情。

答案 1 :(得分:0)

哦,天哪,你需要一个专门的班级来保持价值观。由于列来自db表,因此字段数是固定的。因此,您可以拥有一个具有固定字段的类,而不是一个动态增长的集合。最后使用KeyedCollection<TKey, TItem>结构来保存记录集合。在KeyedCollection<TKey, TItem>中,TKey部分嵌入TItem,在您的情况下为RecordId

class Record
{
    public int Id { get; set; }
    //rest of the fields
}

您的结构应该看起来像KeyedCollection<int, Record>。它也保留了插入顺序。您可以使用RecordId通过索引器查询集合,就像字典一样。