У меня есть приложение 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