DataTable
中的类型有问题。在下面的代码中,我有一个数据表,我为每个列指定了类型:
logItems = new DataTable();
logItems.Columns.Add(new DataColumn("Machine_Name",typeof(string)));
logItems.Columns.Add(new DataColumn("Time_Stamp", typeof(DateTime)));
logItems.Columns.Add(new DataColumn("Message_Text", typeof(string)));
logItems.Columns.Add(new DataColumn("Message_Type",typeof(MsgType)));
稍后当我尝试使用数据表时,就好像表的类型没有设置一样。例如,我在这里用一些数据填充表格。
DataRow dataRow = logItems.NewRow();
dataRow["Machine_Name"] = machineName;
dataRow["Time_Stamp"] = GetDateTime(lineItem);
dataRow["Message_Text"] = GetMsgText(lineItem);
dataRow["Message_Type"] = GetMsgType(dataRow["Message_Text"]);
logItems.Rows.Add(dataRow);
GetMsgType
功能的签名为MsgType GetMsgType(string messageText)
我在使用dataRow["Message_Type"] = GetMsgType(dataRow["Message_Text"])
行时遇到问题:如果没有ToString()
之后它就无法运行,我无法理解原因。当我使用DataRow
方法创建新NewRow()
时,我看到它的方式,它创建了与logItems
相同方案的数据行。因此,列"Message_Text"
的类型为string
,因此当我在GetMsgType
函数中使用它时,我应该可以使用它,但是因为我得到了一个&#,所以它没有按预期工作34;无法从对象转换为字符串"错误。
同样地,我在"Message_Type"
列上进行比较时遇到了问题。该列被声明为类型enum MsgType{}
(见上文),据我所知,使用它是合法的:
DataRow[] errorSubset = logItems.Select(query);
foreach(DataRow lineACDC in errorSubset)
{
if (lineACDC["Message_Type"] == MsgType.Error)
{
任何见解都表示赞赏。