C# datatable linq接收方式3 this ushort变量"Mins"
C# datatable linq receiving mode 3 this ushort variable "Mins"
我已经编写了一个 linq 命令,使 mins 变量变为 3,但我得到了一个 InvalidCastException
。如果没有 System.Data.DataSetExtension.dll
,此命令是否有效?
我无法添加此引用,因为它已经存在但没有此 dll。谢谢
这是我的代码:
dataTable = dataTable.AsEnumerable()
.Where(x => x.Field<int>("Mins") % 3 == 0)
.CopyToDataTable();
让我澄清一下您的要求:您要过滤 Mins
列的行
- 只有整数值
- 是 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# testing to see if a string is an integer?
我已经编写了一个 linq 命令,使 mins 变量变为 3,但我得到了一个 InvalidCastException
。如果没有 System.Data.DataSetExtension.dll
,此命令是否有效?
我无法添加此引用,因为它已经存在但没有此 dll。谢谢
这是我的代码:
dataTable = dataTable.AsEnumerable()
.Where(x => x.Field<int>("Mins") % 3 == 0)
.CopyToDataTable();
让我澄清一下您的要求:您要过滤 Mins
- 只有整数值
- 是 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# testing to see if a string is an integer?