我的任務是從 csv 匯入。
在 csv 中,我有一個“位置名稱”和“人口”列(位置代表一個位置的人口數量),但位置列中的某些行包含“NA”而不是“0”,我必須作業有了這些數字。
我嘗試通過以下方式解決問題:
首先,我將 csv 中的人口作為字串讀取,但之后我應該將其轉換為 int,因為我需要列出人口大于某個數字的行。
這是那個例子:
var task1 = from mergedStats in mergedDataCSV
orderby mergedStats.Population descending
where mergedStats.Population > 10000 // Here is the problem
select new
{
mergedStats.Name,
mergedStats.Population
};
當然,“>”不能應用于“string”和“int”型別的運算元。我試過 int32.TryParse (所以 'NA' 值可以是 0)但我不能在當前背景關系中使用它。
你能幫我解決這個問題嗎?
uj5u.com熱心網友回復:
讀取資料并將其決議為 in 而不是在查詢中執行會更好,但是您沒有包含您的讀取代碼,因此我無法直接建議如何在那里修改它。以下是您如何在查詢中執行此操作:
where (int.TryParse(mergedStats.Population, out var pop) ? pop : 0) > 10000
如果 TryParse 有效,則回傳 bool true,在這種情況下,它會?看到 true 并回傳pop,它是由 TryParse 的第二個引數創建的 int 變數 - 包含成功決議值的 out 引數。如果決議不成功,TryParse 回傳 false,取而代之的是 0。如果您希望在未來的其他場景中使用不同的值,例如在未決議的情況下回傳 -1,您可以在此處更改它
請注意,您可以在閱讀代碼中執行相同的技術,并且最好在那里完成,因為它一次完成并且可以反復查詢。將某些內容保留為字串并在每次需要使用它時將其轉換為 int 是一種資源浪費
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314396.html
上一篇:我如何從行中獲取href
