LINQtoSQL中区分大小写的Where子句?

LINQtoSQL中区分大小写的Where子句?,linq,sql-server-2005,linq-to-sql,Linq,Sql Server 2005,Linq To Sql,我想使用LINQtoSQL检查SQL Server 2005表中是否存在区分大小写的标记。假设标签中存在一个标签“碧昂丝”,那么我想我可以添加“碧昂丝”或“碧昂丝”,但不能再添加“碧昂丝”。以下是我编写的LINQ查询: From t In Context.Tags Where String.Equals(t.Tag, myTag, StringComparison.Ordinal) = True 但它说“Boolean equalsystem.String,System.String,Sys

我想使用LINQtoSQL检查SQL Server 2005表中是否存在区分大小写的标记。假设标签中存在一个标签“碧昂丝”,那么我想我可以添加“碧昂丝”或“碧昂丝”,但不能再添加“碧昂丝”。以下是我编写的LINQ查询:

From t In Context.Tags
Where String.Equals(t.Tag, myTag, StringComparison.Ordinal) = True 

但它说“Boolean equalsystem.String,System.String,System.StringComparison”方法不支持转换为SQL。查找区分大小写的标记的另一种方法是什么?

我认为不能用linqtosql在本机上找到它

你可以试着喝一点。这并不漂亮,但应该能完成任务

编辑 不确定您使用的是c还是vb,但这里有一些c代码。我假设您的基表名为Tag


这与答案基本相同。

如果数据库具有默认排序规则设置,则“blah”和“blah”将相等。我不认为您可以通过LinqToSQL本机实现这一点,但您可以执行一个查询,强制在列级别进行排序。。。i、 e

字符串标签=碧昂丝; IEnumerable result=db.ExecuteQuerytypeofInt32, 从表1中选择*,其中值COLLATE拉丁1_General_CS_AS={0},标记

该查询不会返回任何结果,因为表中的标记中有“beyonce”,而不是“beyonce”。将字符串标记更改为“beyonce”将返回一个结果

如果您想更改数据库的排序规则选项,请阅读本文


希望这有帮助。

数据库区分大小写还是不区分大小写?它的SQL查询是什么?我在这个字段中使用nvarchar100,排序规则是:SQL\u Latin1\u General\u CP1250\u CI\u AS这个字段的排序规则是:SQL\u Latin1\u General\u CP1250\u CI\u AS,当我用SQL\u Latin1\u General\u CP1250\u CI\u替换COLLATE Latin1\u General\u CS\u AS作为不区分大小写的信息时,该字段被定义为nvarchar for多语言
IEnumerable<Tag> matches = Context.ExecuteQuery<Tag>(
    "Select * from Tag where Tag = {0} COLLATE Latin1_General_CS_AS", myTag
);
dim matches as IEnumerable(Of Tag) = Context.ExecuteQuery(Of Tag)( _
    "Select * from Tag where Tag = {0} COLLATE Latin1_General_CS_AS", myTag _
)