我有下表:
CREATE TABLE [dbo].[Phrase] (
[PhraseId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL,
[English] NVARCHAR (250) NOT NULL
)
有没有办法使用Entity Framework我可以选择[English]列的第一个字符小于“k”的所有行。例如,它是“a”,“b”,“c”......“j”等
这样的事情:
query = query.Where(w => w.English.StartsWith("k");
但是对于字符范围而不仅仅是“k”
答案 0 :(得分:1)
您可以在从db获取记录后对其进行过滤。为此,您可以执行以下操作:
var result = query.ToList();
然后按如下方式过滤:
result = result.Where(w => Convert.ToChar(w.English.Substring(0,1).ToLower()) < 'k');
在SQL Server
中,以下查询可行:
SELECT * FROM table WHERE Substring(English, 1, 1) < 'k'
对于字符范围,您的查询将是:
SELECT * FROM table WHERE Substring(English, 1, 1) BETWEEB 'a' And 'j'
以上内容将获取记录,条件是英文专栏的第一个字符应介于a
和j
之间。请注意,在这种情况下,a
和j
将具有包容性。
对于特定字符,您的查询将是:
SELECT * FROM table WHERE Substring(English, 1, 1) IN ('a', 'd', 'f')
上述内容将返回英文专栏以a
,d
,f
开头的记录。否定你可以使用NOT IN ('a', 'd', 'f')
我建议你用上面的查询写一个程序然后 使用实体框架来称呼它。这种方法会快得多。