C# 数据表 linq 接收模式 3 此 ushort 变量 "Mins"



我已经编写了一个linq命令,使mins变量变为三,但我得到了一个InvalidCastException。此命令在没有System.Data.DataSetExtension.dll的情况下工作吗?

我无法添加此引用,因为它已经存在,但没有此dll。感谢

这是我的代码:

dataTable = dataTable.AsEnumerable()
.Where(x => x.Field<int>("Mins") % 3 == 0)
.CopyToDataTable();

让我澄清一下您的要求:您想要过滤列Mins

  1. 只有整数值
  2. 是3的乘积
static DataTable GenerateTestTable(string[] nums)
{
DataTable dt = new DataTable();
dt.Columns.Add("Mins");
foreach (string num in nums)
{
DataRow row = dt.NewRow();
row[0] = num;
dt.Rows.Add(row);
}
return dt;
}
static void Main(string[] args)
{
DataTable dt = GenerateTestTable(new string[] { "1", "3", ".3" });
int n;
dt = dt.AsEnumerable()
.Where(x => int.TryParse(x["Mins"].ToString(), out n)
&& n % 3 == 0)
.CopyToDataTable();
foreach (DataRow r in dt.Rows)
{
Console.WriteLine(r[0]);
}
//only outputs 3
Console.ReadKey();
}

似乎.Where(x => Convert.ToDouble(x["Mins"]) % 3 == 0)也有效。但我还是喜欢先检查int,因为我对double %的结果从来没有信心。

参考

C#测试字符串是否为整数?

字段(DataRow,String(

最新更新