我有这样的查询。
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#,最终我将获得更多高级知识。
谢谢!
答案 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>>
欢呼