吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1040|回复: 7
收起左侧

[求助] C#遇到个list遍历和查询的严重BUG想尽了办法无法解决求大神相助

[复制链接]
头像被屏蔽
kitty0445 发表于 2021-5-7 20:57
提示: 作者被禁止或删除 内容自动屏蔽

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Li7 发表于 2021-5-7 21:04
设计流水号唯一,根据流水号add
weixiaozi 发表于 2021-5-7 22:28
不知道是不是我理解错误,
我觉得楼主整体都复杂化了
本身不应该是数据库设计的时候就考虑到各种字段属性嘛.那么你从数据库读取数据的时候肯定需要条件查询啊!!!你这个
你总不可能每次都要把整个表都读取出来吧?这样很不理智.会造成性能浪费.
然后条件查询出来的结果直接一个List<T> 不就可以了吗?LIST<T>或者ArrayList也可以排序的
cdj68765 发表于 2021-5-7 22:50
[C#] 纯文本查看 复制代码
            var 档案List = new Dictionary<int, List<档案Class>>();
            if (档案List.ContainsKey(档案Class.FLD_PID))
            {
                档案List[档案Class.FLD_PID].Add(档案Class);
            }
            else
            {
                档案List.Add(档案Class.FLD_PID, new List<档案Class>() { 档案Class });
            }

不知道类似这样的代码,是不是你想要的
touna 发表于 2021-5-7 23:25
你这个是列表联动问题,点左边列表,触发事件,右边列表显示数据~
例如左边列表绑定了档案list, 左边列表下拉选定某个值的时候触发value change事件,事件中 查询数据库,
将结果返回右边的列表中
例如左边列表获取的value 是 ID
那么触发事件执行数据库,查询语句就是 select *  from table  where  id=ID   (table 是你要查的数据表名, id是字段名)
再将结果绑定右边列表就OK
PearDress 发表于 2021-5-7 23:47
档案List = new Dictionary<int, 档案Class>();  这个如果你只是为了后面根据日期做查询,可以改为:档案List = new Dictionary<日期, List<档案Class>>();
如果不需要通过Key获取,感觉你这个业务直接List<T>就行了
看你的业务,根据年份切换显示数据,感觉需要重新获取数据呢
wu0o0pj 发表于 2021-5-8 09:35
你这设计的有点问题吧:
    档案List = new Dictionary<int, 档案Class>();
    档案List.Add(档案Class.ID, 档案Class);

用了Dictionary,那之后自然是要通过  档案Class.ID 去查找对应的档案Class,但之后却没有用到;

你的需求是 从 档案List 中 筛选出符合年月等条件的记录集,列到下拉表中,然后可以在其他地方展示明细,或者编辑等操作;

常见的其实是 档案List 作为 List<档案Class>,初始时从数据库中读取所有的记录集,可以通过 sql 语句直接排好序 ;
之后当 year,month 下拉列表选择改变后,从 档案List 中提取 符合的,重新加载到 comboBox 就行了;


[C#] 纯文本查看 复制代码
         /// <summary>
        /// 假设 档案Class 定义如下
        /// </summary>
        private class 档案Class
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public int Year { get; set; }
            public int Month { get; set; }

            public 档案Class()
            {

            }

            public 档案Class(int id, int year, int month)
            {
                ID = id;
                Year = year;
                Month = month;
                Name = $"{id}_{year}_{month}";
            }
        }

        // 初始化,窗体加载时
        private void Init()
        {
            _cboYear.DropDownStyle = ComboBoxStyle.DropDownList;
            _cboMonth.DropDownStyle = ComboBoxStyle.DropDownList;
            _cbo档案.DropDownStyle = ComboBoxStyle.DropDownList;

            _cboYear.Items.Clear();
            for (int i = 2000; i < 2030; i++)
            {
                _cboYear.Items.Add(i);
            }

            _cboMonth.Items.Clear();
            for (int i = 1; i <= 12; i++)
            {
                _cboMonth.Items.Add(i);
            }

            // 数据库获取所有记录
            _档案List = GetAllRecord();

            _cbo档案.DataSource = _档案List;
            _cbo档案.DisplayMember = "Name";
            _cbo档案.ValueMember = "ID";

            _cboYear.SelectedIndex = 0;
            _cboMonth.SelectedIndex = 0;
            _cboYear.SelectedIndexChanged += cboYear_SelectedIndexChanged;
            _cboMonth.SelectedIndexChanged += cboMonth_SelectedIndexChanged;

            Update_档案List();
        }

        private void cboYear_SelectedIndexChanged(object sender, EventArgs e)
        {
            Update_档案List();
        }

        private void cboMonth_SelectedIndexChanged(object sender, EventArgs e)
        {
            Update_档案List();
        }

        private void Update_档案List()
        {
            if (string.IsNullOrWhiteSpace(_cboYear.Text)) { return; }
            if (string.IsNullOrWhiteSpace(_cboMonth.Text)) { return; }

            int year = Convert.ToInt32(_cboYear.Text);
            int month = Convert.ToInt32(_cboMonth.Text);
            var list = _档案List.Where(a => a.Year == year && a.Month == month).ToList();
            _cbo档案.DataSource = list;
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            var obj = _cbo档案.SelectedItem as 档案Class; // 获取选择的档案
            if (obj == null) { return; }

            MessageBox.Show($"ID = {obj.ID }\r\nName = {obj.Name }");
        }
头像被屏蔽
 楼主| kitty0445 发表于 2021-5-8 10:56
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表