C# 用查询结果填充多值字典

C# 用查询结果填充多值字典,c#,.net,.net-3.5,collections,generics,C#,.net,.net 3.5,Collections,Generics,我正在通过SQL查询检索五列。在检索到的列中,我有一个列RecordID,它应该充当字典的键 我指的是发布的解决方案:在StackOverflow,但根据我的情况,我无法有效地使用它 我想存储查询的所有行,但RecordID列也应该充当dictionary元素的键。我想要像这样的东西: Dictionary<RecordID, Entire columns of the current row for this RecordID> Dictionary<key,string[

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

我指的是发布的解决方案:在StackOverflow,但根据我的情况,我无法有效地使用它

我想存储查询的所有行,但RecordID列也应该充当dictionary元素的键。我想要像这样的东西:

Dictionary<RecordID, Entire columns of the current row for this RecordID>
Dictionary<key,string[]>
字典
我认为另一种选择是使用数组,类似于:

Dictionary<RecordID, Entire columns of the current row for this RecordID>
Dictionary<key,string[]>
字典
但我想用任何超快速的方式

使用a-您没有对数据说太多,但您可能需要一些简单的信息,如:

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

当然,有些重载允许您执行其他操作。

哦,看在上帝的份上,您需要一个专用类来保存这些值。由于列来自db表,因此字段的数量是固定的。因此,可以使用具有固定字段的类,而不是动态增长的集合。最后,使用
KeyedCollection
结构保存记录集合。在
KeyedCollection
中,
TKey
部分嵌入在
TItem
中,在您的示例中,它是
记录ID

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

您的结构应该类似于
KeyedCollection
。它还保留了插入顺序。您可以使用索引器使用
RecordId
查询集合,就像查询字典一样。

@Jon:请问您想知道关于数据的哪些信息?您想查看SQL查询吗?@RPK:不清楚您试图获取什么值,或者您是否使用LINQ(因为分组可能在数据库中透明地完成)等等。基本上我们不知道您当前的代码是什么样子。但是无论怎样,托卢库普都应该是你的朋友…@Jon我正在通过SQL将行挑选到一个数据集中。整行由以下列组成:RecordID、ItemID、ItemName、SalePrice、AvailableQty。@RPK:为什么不使用LINQ作为开头?无论如何,您应该能够非常轻松地将
ToLookup
与数据集一起使用。您可能需要调用
DataTable.AsEnumerable()
以首先获取
IEnumerable
。@RPK:它们是完全不同的数据结构。这些天我个人尽量避免使用DataSet/DataTable等。