LINQ DataRowExtensions.Field< int>必须是小数
本文关键字:小数 int DataRowExtensions Field LINQ | 更新日期: 2023-09-27 18:14:05
我在一些c#代码中使用LINQ查询访问简单数据集表中的一些数据的奇怪行为:
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
。
SERVICE是T SQL数据库中的numeric
类型
sql server中的Numeric
数据类型转换为。net中的decimal
数据类型。你可以在这里看到完整的转换列表。
你得到这个错误是因为在c#中不存在十进制和任何其他数字类型之间的隐式转换。您可以在这里看到隐式转换列表,在这里看到显式转换列表。