使用 Linq 搜索从 H 到 L 的单词

With Linq search the words that start from H to L

在我的 LinQ 查询中,我必须搜索从 H 到 L 开头的单词。 这是我的代码:

var Artists = context.GetTable<Artist>();
var leftOuterJoinQuery =
            from arti in Artists
            where arti.Name.StartsWith("H")//to L

var Artists 包含 table 我数据库中的所有艺术家。

有人知道如何解决这个问题吗?

您可以有一个字母列表,然后对其进行过滤 - 例如:

var letters = new[] {"H","I", "J", "K", "L"};
var Artists = context.GetTable<Artist>().Where (a => letters.Any (l => a.Name.StartsWith(l)));

在 SQL 中,您可以为此使用关系运算符(>< 等),但 C# 不接受 stringA > stringB。幸运的是,EF 将 String.CompareTo 翻译成关系运算符,因此您可以:

where arti.Name.CompareTo("H") >= 0 && c.Name.CompareTo("M") < 0)

这将被翻译成

WHERE ([Extent1].[Name] >= 'H') AND ([Extent1].[Name] < 'M')

请注意,是否区分大小写取决于 Name 列的数据库排序规则。