相关疑难解决方法(0)

LINQ-to-SQL中不区分大小写的字符串比较

我已经读过使用ToUpper和ToLower来执行不区分大小写的字符串比较是不明智的,但是在LINQ-to-SQL方面我没有其他选择.LINQ-to-SQL忽略String.Compare的ignoreCase和CompareOptions参数(如果您使用区分大小写的数据库,即使您要求不区分大小写的比较,也会得到区分大小写的比较).ToLower或ToUpper是最好的选择吗?这个比那个好吗?我以为我读过ToUpper更好的地方,但我不知道这是否适用于此.(我正在进行大量的代码审查,每个人都在使用ToLower.)

Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
Run Code Online (Sandbox Code Playgroud)

这转换为一个SQL查询,它简单地将row.Name与"test"进行比较,并且不会在区分大小写的数据库上返回"Test"和"TEST".

.net sql linq vb.net linq-to-sql

133
推荐指数
3
解决办法
11万
查看次数

LINQ to Entities区分大小写比较

这不是LINQ to Entities中区分大小写的比较:

Thingies.First(t => t.Name == "ThingamaBob");
Run Code Online (Sandbox Code Playgroud)

如何与LINQ to Entities实现区分大小写的比较?

.net c# linq-to-entities entity-framework-4

110
推荐指数
4
解决办法
6万
查看次数

String.Equals()无法正常工作

我正在使用LINQ搜索我的一个Entity Framework表,并根据名称找到一个"组".名称是一个字符串,看起来是Unicode(说它在edmx中).我有一个方法GetGroup(),我传递一个名称来搜索.通过代码调试,我已经在我的数据库中有一个名为"Test"的组.一旦我传入名为"TEST"的组,我希望它返回已经在数据库中的"Test".它出于某种原因,没有找到"测试"并认为"测试"不存在.这是我的查询,我不明白为什么它不起作用.请帮忙.

"name"是组名中传递的..Equals如果gr.Name和名字完全相同,我似乎只能工作.如果一个字符在两个字符串之一中是大写字母,则.Equals不起作用.我试图使用InvariantCultureIgnoreCase,这似乎没有帮助.如果有人询问,MyLeagueId并且LeagueId将始终匹配,则设置数据库,以便可以存在不同联盟ID中的组.我不认为这是问题所在.

Group g = (from gr in this.DatabaseConnection.Groups
           where gr.Name.Equals(name, StringComparison.OrdinalIgnoreCase) &&
           gr.LeagueId == this.MyLeagueId
           select gr).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

c# linq equals entity-framework-4

38
推荐指数
5
解决办法
3万
查看次数

获取密码时的字符串比较

我会问一个非常基本的问题,但是因为我遇到了这个问题而且我不知道为什么会发生这种情况.通常当我们比较两个字符串如s1 == s2时,它会与长度,字符,大小写等进行比较,但在linq中使用以下查询时,它与字符串的大小写不匹配.我的DB有Password123,但是当我输入password123时,它也会返回一条实际上错误的记录.我的查询是: var row = DB.tbllogin.Where(m => m.Id == LoginId && m.Password == pwd.Trim()).FirstOrDefault();

它与案例不匹配.DB中的字段是nvarchar类型,pwd是字符串类型,我使用的是Entity Framework ORM.

.net c# asp.net c#-4.0 asp.net-mvc-3

2
推荐指数
1
解决办法
139
查看次数