首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

状态点与具体时间其间的处理

2013-02-18 
状态点与具体时间之间的处理本帖最后由 wuzj8839 于 2013-01-26 21:22:31 编辑有一个问题问一下大家。程序

状态点与具体时间之间的处理
本帖最后由 wuzj8839 于 2013-01-26 21:22:31 编辑 有一个问题问一下大家。程序中要定义一个时间,它要求是可以状态点:比方说“会后10天”,“会后20天”等,也可以是具体的时间。我现在是这样处理的,定义几个时间点对应着这几个状态点,然后作为时间格式存在数据库中。那就是在取出来的时候,翻译成对应的状态点,具体时间就显示时间。数据量大了后,几千条同时读取就会很慢。
然后再datagridview中显示。
方法如下

from o in data.Select_gztj_By室(n, m + 1)
                   select new TJ()
                   {
                       gztj = o,
                       计划时间 = B.ToTime(o.计划时间),
                       入库时间 = B.ToTime(o.入库时间)
                   };

public class TJ
    {
        public TJ()
        {
        }

        public TJ(工作统计 gz)
        {
            this.gztj = gz;
            this.计划时间 = B.ToTime(gz.计划时间);
            this.入库时间 = B.ToTime((DateTime)gz.入库时间);
        }
        public 工作统计 gztj { get; set; }

        public string 计划时间 { get; set; }

        public string 入库时间 { get; set; }

        public bool 选择 { get; set; }
    }

public string ToTime(DateTime dt)
        {
            try
            {
                if (!dt.Equals(null))
                {
                    DateTime yu = new DateTime(2000, 1, 1);
                    if (dt.CompareTo(yu) > 0)
                    {
                        int y, m, r;
                        string mm, rr, s;
                        y = dt.Year;


                        m = dt.Month;
                        r = dt.Day;
                        if (m < 10)
                            mm = string.Format("0{0}", m);
                        else
                            mm = m.ToString();
                        if (r < 10)
                            rr = string.Format("0{0}", r);
                        else
                            rr = r.ToString();
                        s = string.Format("{0}-{1}-{2}", y, mm, rr);
                        return s;
                    }
                    else
                    {
                        return Dictionary.sj[dt];
                    }
                }
                else
                {
                    return "";
                }
            }
            catch
            {
                return "";
            }

        }


public static Dictionary<DateTime, string> sj = new Dictionary<DateTime, string>(); 




用这种办法就会照成读取数据库的时间很长。我还想过先直接重数据库中读取出来然后每条修改,但这样也会很慢。
public List<TJ> ju(IEnumerable<工作统计> a)
        {
            List<TJ> q = new List<TJ>();

                foreach (var o in a)
                {
                    q.Add(new TJ(o));
                }
            return q;
        }


大家有没有什么好的办法,来处理这种情况?谢谢大家。 数据库 C# LINQ EF
[解决办法]
看不懂!

不要学一些博客,上来只说只言片语,然后就来句“废话少说,上代码!”接着就罗列一大堆垃圾代码。

文字要比代码多,这样你才能说明自己的想法,这才是设计。

我没有看懂你的问题,因此就没有心情看你的代码。
[解决办法]
其实就是你在界面上需要怎么显示,在数据库里面就怎么存。比如你可以把你现在存时间的那个列替换成一个字符串类型的列,界面上要显示啥你就存啥。你要显示“会后定”,就存“会后定”。你要显示“2013-01-01”,直接存“2013-01-01”。用的时候直接查询出来显示,不需要任何的逻辑映射。

热点排行