状态点与具体时间之间的处理
本帖最后由 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”。用的时候直接查询出来显示,不需要任何的逻辑映射。