相关疑难解决方法(0)

LINQ包含不区分大小写

此代码区分大小写,如何使其不区分大小写?

public IQueryable<FACILITY_ITEM> GetFacilityItemRootByDescription(string description)
{
    return this.ObjectContext.FACILITY_ITEM.Where(fi => fi.DESCRIPTION.Contains(description));
}
Run Code Online (Sandbox Code Playgroud)

c# linq

168
推荐指数
7
解决办法
16万
查看次数

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万
查看次数

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万
查看次数

实体框架 - 不区分大小写包含?

我想要一个不涉及ToUpper或ToLower的问题的解决方案,正如我在下面的代码中使用的那样;

var upper = term.ToUpper();
using (var db = this.DataContext)
{
    return db.Counties.Where(x => x.CountyName.ToUpper().Contains(upper)).ToList();
}
Run Code Online (Sandbox Code Playgroud)

我正在使用有权使用的框架,因此使用的C#解决方案StringComparison.CurrentCultureIgnoreCase不起作用.它的工作Equals,EndsWithStartsWith,但不是Contains.

entity-framework

32
推荐指数
3
解决办法
2万
查看次数

为调用方法'Boolean Equals提供的参数数量不正确

为什么我得到一个参数异常,说我将错误数量的参数传递给string.equals方法?

我传递了三个论点,这应该是正确的.实际上它应该抛出编译时错误而不是运行时...

你看到错误吗?

var translations = await (from l in context.Languages
                  join t in context.Translations on l.ISO639_ISO3166 equals t.ISO639_ISO3166
                  where string.Equals(l.ApplicationName, applicationName, StringComparison.InvariantCultureIgnoreCase)
                  select new Translation
                  {
                      Key = t.Key,
                      Text = t.Text
                  }).ToListAsync();
Run Code Online (Sandbox Code Playgroud)

UPDATE

Test Name:  GetTranslations
Test FullName:  TaaS.IntegrationTests.Tests.TranslationRepositoryTests.GetTranslations
Test Source:    C:\test\TaaS-WebApplication\TaaS.IntegrationTests\Tests\TranslationRepositoryTests.cs : line 17
Test Outcome:   Failed
Test Duration:  0:00:00,0473367

Result StackTrace:  
at System.Linq.Expressions.Expression.GetMethodBasedBinaryOperator(ExpressionType binaryType, Expression left, Expression right, MethodInfo method, Boolean liftToNull)
   at System.Linq.Expressions.Expression.Equal(Expression left, Expression right, Boolean liftToNull, MethodInfo method)
   at System.Data.Entity.Core.Objects.ELinq.LinqExpressionNormalizer.VisitMethodCall(MethodCallExpression m)
   at System.Linq.Expressions.EntityExpressionVisitor.Visit(Expression …
Run Code Online (Sandbox Code Playgroud)

c# linq

23
推荐指数
2
解决办法
9845
查看次数

LINQ区分大小写

如何根据情况使LINQ区分大小写并且不区分大小写?

我正在使用sql server 2008和Entity Framework 4.0.

我更改了COLLATION以使SQL Server区分大小写.所以对于这样的场景:

 query = query.Where(x => x.Username == username);
Run Code Online (Sandbox Code Playgroud)

它很棒.但是,当按主题(或名称或类似)搜索时,我需要能够从db 忽略大小写中提取数据,如下所示:

query = query.Where(x => (x.Name.Contains(Name)));
Run Code Online (Sandbox Code Playgroud)

当记录是"TestString"并且我正在寻找"测试"或"测试"或类似时,它不起作用.我如何才能使它在文本中找到文本或字符串的一部分?谢谢

sql linq linq-to-entities

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

实体框架和不区分大小写的字符串搜索

我有一个Entity Framework实体,其字符串属性名为Description.
搜索Description包含字符串的所有实体非常简单:

var res = from u ctx.Users where u.Description.contains(str) select u;
Run Code Online (Sandbox Code Playgroud)

但是假设我想支持不区分大小写的搜索?

linq entity-framework

7
推荐指数
1
解决办法
9907
查看次数

为什么我从两个几乎相同的表达式获得不同的结果,以使用Entity Framework上下文从数据库获取数据

我正在验证数据库中的用户名(不区分大小写)和密码(区分大小写)

我正在使用Entity Framework 5.0与数据库进行交互

在数据库中密码是

"0x11A46971EFF1E1A2CA228CF592CA37DC77E7CCF759602D53629C22B693AEEE96CCD9F889D8E9A92C19391E6BD2DD07E741E9B7AA07E391ACDC939B993C9D7F5D"

当我将密码的大小写更改为ie时,我期望为我的后续代码块返回null

"0x11a46971eff1e1a2ca228cf592ca37dc77e7ccf759602d53629c22b693aeee96ccd9f889d8e9a92c19391e6bd2dd07e741e9b7aa07e391acdc939b993c9d7f5d"

但它不会失败并返回适当的用户实体.

using (var context = new MyDbContext(ConnectionString))
{
  return context.Users.Where(x => (x.Name.Equals(userName, StringComparison.OrdinalIgnoreCase) && x.Password.Equals(password))).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

然而,如果我得到所有用户然后比较它给出正确的输出,即user == null

using (var context = new MyDbContext(ConnectionString))
{
  var users = context.Users.ToList();

  return users.Where(x => (x.Name.Equals(userName,StringComparison.OrdinalIgnoreCase) && x.Password.Equals(password))).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

这很奇怪?为什么会这样?如何从LINQ中将区分大小写的查询写入SQL?

.net c# lambda entity-framework

7
推荐指数
3
解决办法
994
查看次数

VB.NET LINQ查询无视字符串大小写

我有以下代码来创建静态元素列表并通过Id检索它们:

Private Shared Property SubStructTypes As IList(Of SubstructureType)

Shared Sub New()
    SubStructTypes = New List(Of SubstructureType) From {
        New SubstructureType With {.Id = "PURLIN", .Description = "Purlin"},
        New SubstructureType With {.Id = "METALDECKING", .Description = "Metal Decking"},
        New SubstructureType With {.Id = "WOODDECKING", .Description = "Wood Decking"}
    }
End Sub

Public Shared Function GetById(ByVal myId As String) As SubstructureType
    If String.IsNullOrWhiteSpace(myId) Then
        Return Nothing
    End If

    Dim straightCompare = SubStructTypes.SingleOrDefault(Function(subStruct) subStruct.Id = myId)
    Dim howIsThisFindingAnything = SubStructTypes.SingleOrDefault(Function(subStruct) subStruct.Id.ToUpper() = myId.ToLower()) …
Run Code Online (Sandbox Code Playgroud)

.net linq vb.net

7
推荐指数
1
解决办法
376
查看次数

Linq执行不区分大小写的比较

我只想在确切的密码和大小写匹配时才想要用户对象.但是,即使密码的大小写不同,此查询也会获取结果:

db.Users.Where(u => u.Username.ToLower() == username.ToLower() &&
                        u.Password == password).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

c# linq entity-framework

5
推荐指数
1
解决办法
4070
查看次数