使用 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
列的数据库排序规则。
在我的 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
列的数据库排序规则。