字典是否适合从数据库中存储多个值?

时间:2018-10-18 09:17:51

标签: c#

我有这样的查询。

SELECT ID,Name,Colour,Price,Tax FROM SomeTable

那应该检索大约300个唯一行。

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

数据将被非常频繁地使用,但是一次只能使用大约30行。我不知道将显示哪30行,所以我想全部显示300行。

我可以使用sql查询来执行此操作,以在每次需要它们时加载我需要的那30行,但是我想拉出所有行并填充一些List,Array,Dictionary,然后使用它们。目标是避免不断调用数据库。


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

字典可以有类似Dictionary<ID(Key),ValueName,ValueColour,ValuePrice,ValueTax>的东西吗?

还是词典对于诸如此类的东西错误的选择?


P.S。也许有更好的方法可以通过使用Entity Framework或其他方式来做到这一点,但我是在实践中这样做的。 15天前开始学习C#,最终我将获得更多高级知识。

谢谢!

3 个答案:

答案 0 :(得分:1)

字典是。因此,您不能像您所说的那样拥有多种内容:

  

字典

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

答案 1 :(得分:1)

您应该创建一个类来容纳每一行:

const demo = new Vue({
  el: '#demo',

  data: {
      slides: [
        {
          title: 'I am slide A',
          featured: 1,
          img: '/images/carousel-img.png',
          id: 1
        },
        {
          title: 'I am Slide B',
          featured: 0,
          img: '/images/carousel-img.png',
          id: 2
        },
        {
          title: 'I am Slide C',
          featured: 0,
          img: '/images/carousel-img.png',
          id: 3
        }
      ],
  },

  methods: {

    getActiveImage: function () {
        return Math.floor(this.$data.slides.length / 2);
    }

  }
});

// In template: <div> {{getActiveImage()}} </div>

然后将它们存储在字典中

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....
     }
}

我采用了将“颜色”设置为字符串的简单选项-但是可以使用多个对象来保存颜色信息,具体取决于如何使用它。 将Tax字段拆分为一个列表是一个单独的问题。

答案 2 :(得分:0)

如果您的设计目标是从内存数据结构存储中提供数据,那么为什么不使用Redis。链接在这里: https://redis.io/

如果您想要字典,那么它是键值对,因此不支持键的多个值,但是您可能会遇到类似的情况:

<Key, List<Value>>

欢呼