使用linQ执行简单的选择

时间:2014-09-01 10:13:09

标签: sql vb.net linq sql-server-2012

我正在使用VS2013和SQL server 2012,VB.net。我正在开发一个Web应用程序。

在我提出这个问题之前,我先说这个问题对于这个委员会来说可能非常简单,但是我无法通过谷歌搜索找到这个。

我有一个包含一些数据的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

这不起作用,因为结果是double,但是如果我将.tostring添加到结果中,那么文本框中的输出就是完整的linq查询,而不是我正在考虑的结果。

我只需要了解这个简单的查询,这样我就可以在此基础上进行构建,但我无法得到它,并且提供的任何帮助都会很棒。

1 个答案:

答案 0 :(得分:6)

这是因为您的结果是IQueryable而不是单个值(即使您预计会是这样)。这也是ToString将为您提供将针对您的数据库运行的SQL的原因。

您需要获得First,或者如果您确定这是一个单一的值Single。如果没有返回任何值,则使用OrDefault s,因此结果将为null。

一些选项:

// 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()