You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Linq to MS SQL查询含小写序列号的数据库条目?

用Linq to MS SQL筛选全小写序列号的条目

没问题!既然你的Linq to SQL环境是大小写不敏感的,直接用普通的相等判断肯定行不通——它会把"abc"和"ABC"当成完全一样的。要筛选出所有序列号为全小写的条目,我们得用能区分大小写的查询逻辑,这里给你两种可靠的实现方式:

方法一:用SqlMethods.Like匹配规则

这种方式利用SQL的通配符匹配,确保序列号里只有小写字母(如果有非字母字符也能兼容,只要字母部分都是小写):

首先需要引用命名空间:

using System.Data.Linq.SqlClient;

然后编写查询:

var lowercaseSerialEntries = db.YourTableName
    .Where(entry => 
        // 确保没有大写字母
        !SqlMethods.Like(entry.SerialNumber, '%[A-Z]%') 
        // 同时确保至少包含小写字母(可选,若允许全非字母的序列号可去掉)
        && SqlMethods.Like(entry.SerialNumber, '%[a-z]%'));

方法二:利用二进制比较(更精准)

如果你的序列号可能包含特殊字符,或者想更严格验证“原字符串和其小写形式的二进制值完全一致”,可以用SQL的二进制校验和逻辑:

using System.Data.Objects.SqlClient;

var lowercaseSerialEntries = db.YourTableName
    .Where(entry => 
        SqlFunctions.BinaryChecksum(entry.SerialNumber) 
        == SqlFunctions.BinaryChecksum(entry.SerialNumber.ToLower()));

这个逻辑的核心是:只有当原字符串本身就是全小写时,它的二进制校验和才会和转小写后的校验和完全一致(大小写不敏感环境下,普通相等判断会忽略大小写,但二进制校验和会区分)。

关键提醒

千万别直接用entry.SerialNumber == entry.SerialNumber.ToLower()——在大小写不敏感的Linq to SQL里,这个判断会对所有条目返回true,完全起不到筛选作用。

内容的提问来源于stack exchange,提问作者Gavin Coates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:42:25