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类型

LINQ DataRowExtensions.Field< int>必须是小数

sql server中的Numeric数据类型转换为。net中的decimal数据类型。你可以在这里看到完整的转换列表。

你得到这个错误是因为在c#中不存在十进制和任何其他数字类型之间的隐式转换。您可以在这里看到隐式转换列表,在这里看到显式转换列表。