我有一个使用LINQ查询来访问一个简单的数据集表中的一些数据的一些C#代码奇怪的行为:LINQ DataRowExtensions.Field <int>必须是<decimal>?
var rowConfig = from row in dsConfig.Tables[0].AsEnumerable()
where row.Field<string>("SERVICE").ToUpper().Contains(trackedServType)
select row;
seqMin = Convert.ToInt32(rowConfig.FirstOrDefault().Field<decimal>("ROYAL_MAIL_SEQ_MIN"));
如果我写FirstOrDefault().Field<int>
我在运行时获取一个InvalidCastException,
出于某种原因它必须是decimal
。
“服务” 是在为T SQL数据库
你为什么觉得这很奇怪?您传递给'Field()'方法的类型'T'必须匹配['DataColumn.DataType'](https://msdn.microsoft.com/zh-cn/library/system.data.datacolumn.datatype( v = vs.110).aspx)属性 –