Find
returns a single row of data as a SimpleRecord
object based on a SimpleExpression
defining the criteria for the search; if more than one row matches, the first row retrieved from the data store is returned.
public SimpleRecord Find( SimpleExpression criteria )
criteria
SimpleExpression
dbo.Album.GenreId == 1
.Type: SimpleRecord
An object containing a property for each of the columns requested by Simple.Data whose values are those of the single row retrieved from the data store.
Exception | Condition |
---|---|
FormatException - or - BadExpressionException |
criteria is a malformed SimpleExpression |
BadExpressionException |
criteria has been assigned zero or more than one SimpleExpression |
The Find
method is used instead of FindBy
when the criteria is more complicated than simple equality tests. Criteria can be constructed just using regular C# expressions, with all operators supported and precedence-grouping honoured.
These C# expressions are represented internally as a SimpleExpression
object. For more on SimpleExpressions, please read this page. Read also the Column Selection page for more on how to identify the columns in a SimpleExpression.
The following example retrieves the first album with GenreId
equal to 1
and outputs its title to the Console window.
var album = Database.Open().Albums.Find(db.Albums.GenreId == 1); Console.WriteLine(album.Title);
Simple.Data sends the following SQL to the database when album
is evaluated.
SELECT TOP 1 [dbo].[Album].[AlbumId], [dbo].[Album].[GenreId], [dbo].[Album].[ArtistId], [dbo].[Album].[Title], [dbo].[Album].[Price], [dbo].[Album].[AlbumArtUrl] from [dbo].[Album] where [dbo].[Album].[GenreId] = @p1 @p1 (Int32) = 1
The following example retrieves the first album with GenreId
equal to 1
and ArtistId
equal to 120
and outputs its title to the Console window.
var album = Database.Open().Albums .Find(db.Albums.GenreId == 1 && db.Albums.ArtistId == 120); Console.WriteLine(album.Title);
Simple.Data sends the following SQL to the database when album is evaluated.
SELECT TOP 1 [dbo].[Album].[AlbumId], [dbo].[Album].[GenreId], [dbo].[Album].[ArtistId], [dbo].[Album].[Title], [dbo].[Album].[Price], [dbo].[Album].[AlbumArtUrl] from [dbo].[Album] where ([dbo].[Album].[GenreId] = @p1 AND [dbo].[Album].[ArtistId] = @p2) @p1 (Int32) = 1 @p2 (Int32) = 120
The following example retrieves the first album with GenreId
greater than 2
or ArtistId
less than or equal to 200
and outputs its title to the Console window.
var album = Database.Open().Albums .Find(db.Albums.GenreId > 2 || db.Albums.ArtistId <= 200); Console.WriteLine(album.Title);
Simple.Data sends the following SQL to the database when album is evaluated.
SELECT TOP 1 [dbo].[Album].[AlbumId], [dbo].[Album].[GenreId], [dbo].[Album].[ArtistId], [dbo].[Album].[Title], [dbo].[Album].[Price], [dbo].[Album].[AlbumArtUrl] from [dbo].[Album] where ([dbo].[Album].[GenreId] > @p1 OR [dbo].[Album].[ArtistId] <= @p2) @p1 (Int32) = 2 @p2 (Int32) = 200