2014-09-01 45 views
0

我正在使用VS2013與SQL Server 2012,VB.net。我正在開發一個Web應用程序。使用linQ執行簡單選擇

讓我說,在我問這個問題之前,這可能是非常簡單的這個董事會,但我一直無法通過谷歌搜索找到這一點。

我有一個SQL表,它包含一些數據,兩列(settingName(nvarchar)和settingValue(float))。我想要做以下事情,但使用LinQ。

SELECT Settingvalue 
FROM Settings 
WHERE settingName = 'Name1' 

到目前爲止我在VB中有以下內容。

Dim db As New GMConnectionDataContext 

    Dim result = From a In db.Settings 
       Where a.SettingName = "Name1" 
       Select a.SettingValue 


    txtEgdon.Text = result 

這並不如結果工作是雙,但如果我添加的ToString導致然後在文本框中輸入輸出是完整的LINQ查詢沒有結果,我looing了。

我只需要了解這個簡單的查詢,所以我可以建立它,但我不能得到它,任何提供的幫助將是偉大的。

回答

6

這是因爲你的結果是IQueryable而不是單個值(即使你期望它是)。這也是爲什麼ToString會爲您提供將針對您的數據庫運行的SQL。

您需要獲得First或者如果您確定這是單個值,請獲取Single。在沒有返回值的情況下使用OrDefault s,結果將爲空。

幾個選項:

// You expect 1 to many results and get the first 
txtEgdon.Text = result.First().ToString() 
// You expect 0 to many results and get the first or null in case of zero results 
txtEgdon.Text = result.FirstOrDefault().ToString() 
// You expect exactly 1 result and get it (you will get an exception if no results are returned) 
txtEgdon.Text = result.Single().ToString() 
// You expect exactly 0 or 1 results and get null or the result 
txtEgdon.Text = result.SingleOrDefault().ToString() 

我寧願FirstOrDefault()

+0

隨着'選項嚴格On'填充時,文本框,你就需要使用'ToString'。 – 2014-09-02 15:36:22

+0

@ChrisDunaway沒有關於Option Strict On的建議,是嗎? – 2014-09-02 15:39:15

+0

它應該開啓,我只想指出,如果它是_is_ on,你的代碼就不會編譯。在我看來,VB.Net的代碼示例應該寫爲「Option Strict」,以鼓勵最佳實踐。 – 2014-09-02 15:42:02