我撰寫了一個 linq 命令,使 mins 變數變為三,但我得到了一個InvalidCastException. 這個命令在沒有System.Data.DataSetExtension.dll?
我無法添加此參考,因為它已經存在但沒有此 dll。謝謝
這是我的代碼:
dataTable = dataTable.AsEnumerable()
.Where(x => x.Field<int>("Mins") % 3 == 0)
.CopyToDataTable();
uj5u.com熱心網友回復:
讓我澄清一下您的要求:您要過濾該列的行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# 測驗字串是否為整數?
欄位(資料行,字串)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/445461.html
