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

时间:2015-11-15 14:21:18

标签: c# sql linq visual-studio linq-to-entities

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

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

var Artists包含来自我的数据库的所有艺术家的表格。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

在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列的数据库归类,是否考虑了区分大小写。