2016-09-30 49 views
-2

當試圖從零開始的字符串條件linq lambda表達式得到麻煩,它不起作用。Lambda表達式當條件得到麻煩時,字符串從零開始

CityCode字段類型是字符串。

例如:

var hospitals=context.Hospitals.Where(p=>p.CityCode=="01"); 

然後它不從數據庫返回的任何行。

但當試試這個:

var hospitals=context.Hospitals.Where(p=>p.CityCode=="21"); 

它可以完美運行。

我該如何解決這個問題?

請幫

+3

不,該代碼不「完美」 - 它不會編譯,因爲「21」不是有效的字符文字。現在,請顯示這是用來匹配的數據。數據庫中的字段類型是什麼?你在這裏沒有使用數字類型的原因? –

+0

是CityCode類型的字符串嗎?那麼你應該使用雙引號(「01」) –

+0

假設單引號是一個錯字,應該是雙引號,並且'CityCode'實際上是DB中的一個'string'類型,我猜測你可能有一個值像「1」,但這不會匹配「01」。由於我們必須做出這麼多的假設,所以你不清楚你的問題是什麼。 – juharr

回答

3

我想知道這個在所有工作。這實際上還要考慮的CityCode

  • 類型如果你比較int值,你應該使用.Where(p=>p.CityCode== 1);

  • 如果你比較char.Where(p=>p.CityCode=='1'); //only one character is valid

  • 如果CityCode是string然後.Where(p=>p.CityCode=="21");

+0

但是從數據庫字符串和'01'。 – kodcu

+0

所以'「01」'確定一個字符串,並有記錄,適合這種情況在您的數據庫? – fubo

+0

@kodcu你好像不明白'01'和'01'之間的區別。請確定你的意思。 – Mixxiphoid