使用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)如何使用非数字字段执行< =类型运算符?
任何想法都赞赏!
答案 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));