LINQ中的“LEFT”运算符在哪里?

时间:2009-11-03 14:33:39

标签: sql linq between

使用SQL Server 2005我运行了这样的查询

SELECT * 
FROM mytable 
WHERE (LEFT (title, 1) BETWEEN @PREFIXFROM AND @PREFIXTO)

我用它来做字母过滤,例如

PREFIXFROM = a
PREFIXTO = c 

我得到atable和c(包括)之间mytable中的所有项目

我如何在linq中执行此操作?

选择所有记录很好..但是 1)如何进行“LEFT”操作 2)如何使用非数字字段执行< =类型运算符?

任何想法都赞赏!

1 个答案:

答案 0 :(得分:3)

不要想到SQL - 想想你想要实现的目标,以及如何在.NET中实现它。所以你试图获得第一个角色,并确定它是否在'a'和'c'之间:

var query = from row in mytable
            where row.title[0] >= 'a' && row.title[0] <= 'c'
            select row;

或点符号:

var query = mytable.Where(row => row.title[0] >= 'a' && row.title[0] <= 'c');

可替换地:

var query = mytable.Where(row => row.title.Substring(0, 1).CompareTo("a") >= 0 &&
                                 row.title.Substring(0, 1).CompareTo("c") <= 0));