Silentbob
Silentbob

Reputation: 3065

Using linQ to perform a simple select where

I am using VS2013 with SQL server 2012, VB.net. I am developing a web application.

Let me say before I ask the question that this will probably be extremely simple for this board but I have not been able to find this through googling.

I have an SQL table that holds some data, two columns (settingName (nvarchar) and settingValue (float)). I want to do the following but using LinQ.

SELECT Settingvalue
FROM Settings
WHERE settingName = 'Name1'

I have the following so far in VB.

    Dim db As New GMConnectionDataContext

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


    txtEgdon.Text = result

This doesn't work as result is a double but if I add .tostring to result then the output in the text box is the full linq query not the result I am looing for.

I just need to understand this simple query so I can build on it but I just cant get it and any help offered would be great.

Upvotes: 0

Views: 59

Answers (1)

Giannis Paraskevopoulos
Giannis Paraskevopoulos

Reputation: 18411

This is because your result is an IQueryable and not a single value(even if you expect it to be). This is also why ToString will get you the SQL that will be run against your DB.

You need to get either the First or if you are really sure this would be a single value get Single. The OrDefaults are used in the case that no value is returned so the result will be null.

A Few options:

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

I would prefer the FirstOrDefault()

Upvotes: 6

Related Questions