C# 在LINQ2SQL中选择值介于两个字符串之间的记录

C# 在LINQ2SQL中选择值介于两个字符串之间的记录,c#,linq,sql-server-2008,C#,Linq,Sql Server 2008,如果某个特定值介于两列的值之间,如何从表中选择一行或多行 例如,在SQL中: SELECT * FROM MyTable WHERE '123ABC' BETWEEN MinValue AND MaxValue 我在LINQ中尝试了以下操作(使用LINQpad): MyTable中的d中的 其中d.MinValue.CompareTo(“abbbc”)>=0&& d、 MaxValue.CompareTo(“abbbc”)=0&& d、 MaxValue.CompareTo(“CCCC”)Ge

如果某个特定值介于两列的值之间,如何从表中选择一行或多行

例如,在SQL中:

SELECT * FROM MyTable WHERE '123ABC' BETWEEN MinValue AND MaxValue
我在LINQ中尝试了以下操作(使用LINQpad):

MyTable中的d中的

其中d.MinValue.CompareTo(“abbbc”)>=0&&
d、 MaxValue.CompareTo(“abbbc”)=0&&

d、 MaxValue.CompareTo(“CCCC”)Gert Arnold是正确的,您混淆了比较运算符

对于原始LINQ表达式

from d in MyTable
          where d.MinValue.CompareTo("ABBBBC") >= 0 &&
                d.MaxValue.CompareTo("ABBBBC") <= 0
 select d
这显然是错误的。将查询更改为

from d in MyTable
          where d.MinValue.CompareTo("ABBBBC") <= 0 &&
                d.MaxValue.CompareTo("ABBBBC") >= 0
 select d
MyTable中的d中的

其中d.MinValue.CompareTo(“abbbc”)=0
选择d

应产生所需的结果。如果您仍然认为它不正确,请提供您认为应该由查询返回的数据行和您的筛选值。

您必须交换<代码> <代码和代码> <代码>标志。如果我从LINQPad获得生成的SQL语句,很明显,is希望我给出准确的最小值和最大值,而不是找到一行,其中我的值(x)位于MinValue列和MaxValue列之间。我不知道我昨天做了什么,我一定是喝醉了,或者刚刚离开,这很有意思。谢谢。:)
from d in MyTable
          where d.MinValue.CompareTo("ABBBBC") >= 0 &&
                d.MaxValue.CompareTo("ABBBBC") <= 0
 select d
-- Region Parameters
DECLARE @p0 NVarChar(1000) = 'ABBBBC'
DECLARE @p1 NVarChar(1000) = 'ABBBBC'
-- EndRegion
SELECT [t0].[MinValue], [t0].[MaxValue]
FROM [MyTable] AS [t0]
WHERE ([t0].[MinValue] >= @p0) AND ([t0].[MaxValue] <= @p1)
SELECT * FROM MyTable WHERE 'ABBBBC' BETWEEN MaxValue AND MinValue
from d in MyTable
          where d.MinValue.CompareTo("ABBBBC") <= 0 &&
                d.MaxValue.CompareTo("ABBBBC") >= 0
 select d