Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何筛选列的第一个字符在EF和SQL Server范围内的行?_C#_Sql Server_Entity Framework_Linq - Fatal编程技术网

C# 如何筛选列的第一个字符在EF和SQL Server范围内的行?

C# 如何筛选列的第一个字符在EF和SQL Server范围内的行?,c#,sql-server,entity-framework,linq,C#,Sql Server,Entity Framework,Linq,我有下表: CREATE TABLE [dbo].[Phrase] ( [PhraseId] UNIQUEIDENTIFIER DEFAULT (newid()) NOT NULL, [English] NVARCHAR (250) NOT NULL ) 有没有一种方法可以使用Entity Framework来选择[English]列的第一个字符小于“k”的所有行。例如,它是“a”、“b”、“c”。。。“j”等 大概是这样的: query =

我有下表:

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”

您可以在从数据库中获取记录后对其进行过滤。为此,您可以执行以下操作:

var result = query.ToList();
然后按如下方式对其进行过滤:

result = result.Where(w => Convert.ToChar(w.English.Substring(0,1).ToLower()) < 'k');
对于字符范围,您的查询将是:

SELECT * FROM table WHERE Substring(English, 1, 1) BETWEEB 'a' And 'j'
 SELECT * FROM table WHERE Substring(English, 1, 1) IN ('a', 'd', 'f')
以上内容将获取记录,条件是英文列的第一个字符应介于
a
j
之间。请注意,在这种情况下,
a
j
将包括在内

仅对于特定字符,您的查询将是:

SELECT * FROM table WHERE Substring(English, 1, 1) BETWEEB 'a' And 'j'
 SELECT * FROM table WHERE Substring(English, 1, 1) IN ('a', 'd', 'f')
上面将返回英文列以
a
d
f
开头的记录。要进行否定,可以在('a','d','f')中使用
NOT

我建议您使用上述查询编写一个过程,然后 使用实体框架调用它。这种方法会快得多


试试这个:
query=query.Where(w=>w.English.Substring(0,1)<“k”)@ZoharPeled-见下面的评论。这将不起作用:-(您可以尝试
query=query.Where(w=>w.English[0]<'k');
。但是,我不确定它将如何处理大小写或非字母字符。我得到的消息是,<无法应用于'string'和'string'类型的操作数