我有一个C#应用程序正在读取存储过程中的数据,然后创建一条消息。我使用SqlDataReader从数据库中读取信息。以前,我每次有不同类型的消息时都必须创建一个新类,并且它已经失控。换言之,我的意思是每列包含不同数量的列和/或不同类型的数据。我试图让添加不同的消息类型变得更加容易,并且不知道如何在读取数据时动态地格式化数据。在将数据读入我的Data#变量后,我试图格式化数据,但是它只是垃圾,因为它被格式化为错误的类型。所以,当我读到我的变量时,我目前看到它处理数据的唯一方法,我无法弄清楚如何。SqlDataReader和动态格式化读取数据
我的我的消息的格式如下:
Message
Subject
(Text)
MessageHeader1
MessageHeader2
Title
Header1
Header2
Header3
(Data)
Data1
Data2
Data3
的问题是数据#变量可以包含不同类型的信息。它当前可以包含字符串,整数,日期,百分数等。有没有一种方法可以基于另一个值或其他方法格式化数据,以便可以正确格式化不同类型的数据?
if (dr.Read())
{
message.Subject = dr["Subject"].ToString();
message.MessageText = new AlertMessageText()
{
MessageHeader1 = dr["MessageHeader1"].ToString(),
MessageHeader2 = dr["MessageHeader2"].ToString(),
Title = dr["Title"].ToString(),
Header1 = dr["Header1"].ToString(),
Header2 = dr["Header2"].ToString(),
Header3 = dr["Header3"].ToString(),
MessageData = new List<AlertMessageData>(),
};
}
...
while (dr.Read())
{
message.MessageText.MessageData.Add(new AlertMessageData()
{
Data1 = string.Format("{0:n0}", dr["Data1"]),
Data2 = string.Format("{0:n0}", dr["Data2"]),
Data3 = string.Format("{0:MM/dd/yyyy}", dr["Data3"]), // Formats Data as a Date
});
}
这个效果很好。谢谢! – buzzzzjay 2012-02-03 15:29:32