搜索范围搜索字母字段

时间:2010-12-18 13:54:58

标签: c# sql-server entity-framework

我有一个应用程序,我将其保存在数据库中:

FromLetter ToLetter
AAA         AAZ
ABC         MNL

我需要的是像这个AAC一样搜索并返回记录1和FBC并返回记录2。 是否相同的功能,而不是字母我保存日期。我需要做同样的查询。

我正在使用SQL Server和Entity Framework,任何想法如何做到这一点?

3 个答案:

答案 0 :(得分:1)

我认为使用整数表示FromLetterToLetter属性要容易得多。特别是如果字符串的长度总是只有3 - 你可以简单地将数字编码为:

(((letter1 - 'A') * 26 + (letter2 - 'A')) * 26) + (letter3 - 'A')

这将为您提供0到26 ^ 3之间的数字,表示三重奏,并且可以轻松转换回字符串(在数字基数之间转换数字时使用模数和除法)。这个数字很容易适合Int32(最多6个字母)。

搜索指定范围内的字符串将是对数字范围内的整数的简单搜索(这很容易做到且效率很高)。

答案 1 :(得分:1)

应该很直接。这是一个Linq to Entities解决方案,忽略大小写:

实体框架/ Linq解决方案字符串:

string yourValue = somevalue;
var result = (from r in db.ExampleTable
              where String.Compare(yourValue, r.FromLetter, true) == 1
              && String.Compare(yourValue, r.ToLetter, true) == -1
              select r).First();

日期:

DateTime yourValue = somevalue;
var result = (from r in db.ExampleTable
              where yourValue >= r.FromDate
              && yourValue <= r.ToDate
              select r).First();

答案 2 :(得分:0)

天才解决方案.... bunglestink

我浪费了大量时间研究EF中字符串的“between”子句的实现。这很有帮助。

相关问题