c# 怎么把数据库某个表的内容加到dictionary字典中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 怎么把数据库某个表的内容加到dictionary字典中?相关的知识,希望对你有一定的参考价值。

如题,我希望把某个表加到dictionary,这样我定时判断数据就不用总是读取数据库了。直接读取dictionary,应该会效率点吧?但怎么加呢?

这样可以读取,但是这样会带来的问题是,如果数据库数据有变更,你的集合是没有办法自动同步的,需要自己手动处理

添加方法:
查询得到数据表对应所有数据的集合(可以用Datatable接收),循环Datatable中的行对象,取出记录后写入到dictionary对象中就可以了追问

这个表不会修改

我主要的意思是不想循环遍历数据,用了dataset,我还要for(int i=0;i<ds.table[0].rows.count;......)
if(ds.table[0].rows[0]["string"]==1)

else

我还要写以上这种形式的循环,但是我之前的循环太多了,这样写会导致一个方法下来,会有上万次循环,不效率。就是这个意思,最主要的意思就是最好不用循环

追答

不用循环最方便的方式就是全局变量,而且你也没有必要一定要把集合放到dictionary中的,datatable的操作也是很方便的(使用全局变量个人建议最好不要使用,因为很容易出问题),希望对你有所帮助

参考技术A 你说的东西就是普通的dataset和datatable的用途,并不是用什么字典(当然一定要用字典也不是不行),至于datatable怎么用,请找任何一个C#的基础教材。追问

我主要的意思是不想循环遍历数据,用了dataset,我还要for(int i=0;i<ds.table[0].rows.count;......)
if(ds.table[0].rows[0]["string"]==1)

else

我还要写以上这种形式的循环,但是我之前的循环太多了,这样写会导致一个方法下来,会有上万次循环,不效率。就是这个意思,最主要的意思就是最好不用循环。。

追答

不需要你循环,它本身有datatable select,支持条件查询,这是基础内容不多说了

本回答被提问者和网友采纳

C#: 要把容器内的某个控件 在运行后随便拖动,该怎么做啊?

大多WinForm控件都有MouseMove,MouseDown,MouseUp.
你可以就利用控件的这三个事件来实现鼠标拖动某个控件.

如:
1.新建一窗体.
2.在窗体画一个button控件.
3.在button控件的MouseMove,MouseDown,MouseUp三事件方法里分别写下这样的代码:

bool _isPressed=false;
Point _position=new Point(0,0);
private void button_MouseMove(object sender,EventArgs e)

if(_isPressed)

_position.X=e.X;
_position.Y=e.Y;
this.button.Location=_position;



private void button_MouseDown(object sender,EventArgs e)

_isPressed=true;


private void button_MouseUp(object sender,EventArgs e)

_isPressed=false;


在这里写代码可能会写错部分代码.

不过这是一种比较普通用法的思路.

希望对你有用.
参考技术A

下面演示了如何动态创建和拖动控件位置(运行时)。


调用下面代码的 〈给控件添加移动功能〉方法,就能让控件在运行时用右键拖动。


       

 private void 给控件添加移动功能(Control 控件)

            控件.MouseDown += 按钮_MouseDown;

            控件.MouseUp += 按钮_MouseUp;

            控件.MouseMove += 按钮_MouseMove;

       

            

        private Point 鼠标位置1, 鼠标位置2, 窗体位置1, 窗体位置2;

        private bool 按下鼠标 = false;

        public static bool 允许拖动 = true;

        private void 按钮_MouseDown(object sender, MouseEventArgs e)

            if (允许拖动)

                if (e.Button == MouseButtons.Right)

                    按下鼠标 = true;

                    鼠标位置1 = Control.MousePosition;

                    Control c = sender as Control;

                    窗体位置1 = c.Location;

               

           


       

        private void 按钮_MouseMove(object sender, MouseEventArgs e)

            if (允许拖动 && 按下鼠标)

                鼠标位置2 = Control.MousePosition;

                窗体位置2.X = 鼠标位置2.X - 鼠标位置1.X + 窗体位置1.X;

                窗体位置2.Y = 鼠标位置2.Y - 鼠标位置1.Y + 窗体位置1.Y;


                Control c = sender as Control;

                c.Location = 窗体位置2;


                窗体位置1 = 窗体位置2;

                鼠标位置1 = 鼠标位置2;


                坐标显示.Visible = true;

                var p = this.PointToScreen(this.Location);

                坐标显示.Location = new Point(c.Location.X, c.Location.Y - 坐标显示.Height);

                坐标显示.BackColor = Color.LightSeaGreen;

                坐标显示.Text = string.Format("0:0,1:0", c.Location.X, c.Location.Y);

           

       

        private void 按钮_MouseUp(object sender, MouseEventArgs e)

            if (允许拖动)

                if (e.Button == MouseButtons.Right)  

                    按下鼠标 = false;

               

                坐标显示.Visible = false;

           

       

参考技术B 可以动态改变位置的嘛

以上是关于c# 怎么把数据库某个表的内容加到dictionary字典中?的主要内容,如果未能解决你的问题,请参考以下文章

C#怎么把list中某个元素出现n次后的内容存入另一个list

怎么把数据库中的某个表的某个字段默认值设为0?

MySQL怎么把表中一个字段数据复制到另外一个表的某个字段下

c#如何查询数据库中表的一列数据并赋值给一个数组

有一个实时监控的项目,现在我想要在C#代码中监测mysql数据库中一张表的更新变化的情况,

c#中两个列名相同的datatable,如何将他们数据加到一起?