C# 字典对存储数据库中的多个值有用吗?

C# 字典对存储数据库中的多个值有用吗?,c#,C#,我有这样的疑问 SELECT ID,Name,Colour,Price,Tax FROM SomeTable 这将检索大约300个唯一的行 然后,我会定期访问那些检索到的行,并在应用程序中使用部分检索到的数据 数据将经常使用,但每次仅使用大约30行。我不知道会显示哪30行,所以我想全部显示300行 我可以使用sql查询来加载我每次需要的30行,但我想提取所有行,填充一些列表、数组和字典,然后使用它们。目标是避免不断调用数据库 实现这些目标的最有效方式是什么 字典可以有类似于字典的东西吗 或者

我有这样的疑问

SELECT ID,Name,Colour,Price,Tax FROM SomeTable
这将检索大约300个唯一的行

然后,我会定期访问那些检索到的行,并在应用程序中使用部分检索到的数据

数据将经常使用,但每次仅使用大约30行。我不知道会显示哪30行,所以我想全部显示300行

我可以使用sql查询来加载我每次需要的30行,但我想提取所有行,填充一些列表、数组和字典,然后使用它们。目标是避免不断调用数据库


实现这些目标的最有效方式是什么

字典可以有类似于
字典的东西吗

或者,对于这样的东西,字典的选择是错误的


另外,也许有更好的方法来使用实体框架或其他东西,但我这样做是为了实践。15天前开始学习C#15天,最终我会学到更高级的东西

谢谢大家!

字典是。所以你不能像你说的那样拥有多个东西:

字典


但是,没有什么可以阻止您为所有这些属性创建一个类/实体,并根据主键列值保存到字典。

您应该创建一个类来保存每一行:

class MyObject
{
     int ID {get;set;}
     string Name {get;set;}
     string Colour {get;set;}
     decimal Price {get;set;}
     List<decimal> Tax {get;set;}

     // Constructor
     public MyObject(DataRow row)
     {
          this.ID = Convert.ToInt32(row["ID"].ToString()); 
          this.Name = row["Name"].ToString();
          // etc....
     }
}
类MyObject
{
int ID{get;set;}
字符串名称{get;set;}
字符串颜色{get;set;}
十进制价格{get;set;}
列表税{get;set;}
//建造师
公共MyObject(数据行)
{
this.ID=Convert.ToInt32(第[“ID”].ToString()行);
this.Name=row[“Name”].ToString();
//等等。。。。
}
}
然后把这些储存在字典里

var myDictionary = new Dictionary<int, MyObject>();
foreach(var row in DataTable.Rows)
{
     var newObject = new MyObject(row); // Calls the constructor to load from the row
     myDictionary.Add(newObject.ID, newObject);
}
var myDictionary=newdictionary();
foreach(DataTable.Rows中的var行)
{
var newObject=newmyobject(行);//调用构造函数从该行加载
添加(newObject.ID,newObject);
}
我选择了一个简单的选项,将颜色设置为字符串-但是有几个对象可以用来保存颜色信息,具体取决于它的使用方式。
将税务字段拆分为列表是一个单独的问题。

如果您的设计目标是从内存数据结构存储中提供数据,那么为什么不使用Redis呢。以下是链接:

如果您想要字典,则它是键、值对,因此不支持一个键的多个值,但您可以有如下内容:


干杯

是的,这本字典很好。@WiktorZychla你熟悉
字典
?因为我不是…我担心的是
税(束值)
。此列是否包含分隔的值?如果是这样的话,你应该读一读,在那里你会看到很多原因,为什么这个问题的答案是绝对肯定的!这就是我问的原因之一,我看到了Dictionary,但找不到Dictionary。没有一个ID,而且有多个列。我喜欢字典。这是可行的吗?还有什么其他的东西我可以有多种材料,将适用于这种情况吗?取决于你的情况是什么。字典很有用,因为它可以更快地根据关键字进行搜索。您可以使用一个简单的列表,但搜索时间是O(N)。