簡體   English   中英

在C#中比較字符串為null還是為空

[英]Compare string null or empty in c#

在我的MySQL Db表中,我有Check字段。

存儲在“ Check它”字段上的值可以是: null-1

當存儲在“ Check ”字段中的值為null-1我需要返回xxx值。 我嘗試過:

string Check = sdr["Check"] == DBNull.Value || sdr["Check"] == "-1,00" ? "xxx" : sdr["Check"].ToString();

沒有成功,因為輸出始終為-1,00

該如何解決呢?

請幫助我,非常感謝。

問題在於您正在比較錯誤的對象。 System.Data結果集中返回的值是實際值的包裝。 您需要的是鍵入的版本。 基本上,檢查應如下所示:

int checkIndex = sdr.GetOrdinal("Check");
string Check = sdr.IsDBNull(checkIndex) || (sdr.GetString(checkIndex) == "-1,00") ? "xxx" : sdr.GetString(checkIndex);

如果“ Check”實際上是一個數字,則可能要使用IntValue("Check")調用,以解決全球化問題(如果您的應用程序曾經部署在使用“”的地方)。 而不是小數點的“,”。

有關完整的API,請參見https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqldatareader(v=vs.110).aspx


如果您的MySQL數據庫未設置為使用與C#應用程序相同的語言環境格式,則您對數字格式的假設可能不正確。 為了使支票的版本更可靠,我建議使用以下方法:

 int checkIndex = sdr.GetOrdinal("Check");
 string Check = "xxx";
 double checkValue = sdr.IsDBNull(checkIndex) ? -1 : Convert.ToDouble(sdr[checkIndex]);

 if (checkValue != -1)
 {
     Check = checkValue.ToString(CultureInfo.CurrentCulture);
 }

如果數據類型為十進制10,2 ,則需要Convert.ToDecimal值:

 string Check = (sdr["Check"] == DBNull.Value || Convert.ToDecimal(sdr["Check"]) == -1) ? "xxx" : sdr["Check"].ToString();

您可以通過以下代碼將字符串比較為空或空

string str = Your string
if(String.IsNullOrEmpty(str))
{
    if yes, it comes here
}
else
{
    if not, it comes here
}

String.IsNullOrEmpty()bool類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM