c# - How can I filter rows where the first character of a column is in a range with EF and SQL Server? -
i have following table:
create table [dbo].[phrase] ( [phraseid] uniqueidentifier default (newid()) not null, [english] nvarchar (250) not null )
is there way using entity framework can pick rows first character of [english] column less "k". example either "a", "b", "c" ... "j" etc
something this:
query = query.where(w => w.english.startswith("k");
but range of characters , not "k"
you can filter after fetching records db. can following:
var result = query.tolist();
and filter follows:
result = result.where(w => convert.tochar(w.english.substring(0,1).tolower()) < 'k');
in sql server
, following query work:
select * table substring(english, 1, 1) < 'k'
for range of characters, query be:
select * table substring(english, 1, 1) betweeb 'a' , 'j'
the above fetch records on condition english column's first character should in between of a
, j
. please note a
, j
inclusive in case.
for specific characters, query be:
select * table substring(english, 1, 1) in ('a', 'd', 'f')
the above return records english column starts a
, d
, f
. negate can use not in ('a', 'd', 'f')
i suggest write procedure above query , call using entity framework. approach faster.
Comments
Post a Comment