这不是LINQ to Entities中区分大小写的比较:
Thingies.First(t => t.Name == "ThingamaBob");
Run Code Online (Sandbox Code Playgroud)
如何与LINQ to Entities实现区分大小写的比较?
我正在使用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) 我在 EntityFramework Core 中收到此警告,有什么问题?
我已经将 MSSQL 数据库设置为区分大小写。
Latin1_General_100_CS_AS
var test = await _context.Students
.FirstOrDefaultAsync(m => m.LastName.Equals("ALEXANDER", StringComparison.InvariantCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
Microsoft.EntityFrameworkCore.Query:警告:LINQ 表达式 'where [m].LastName.Equals("ALEXANDER", InvariantCultureIgnoreCase)' 无法翻译,将在本地进行评估。
我在使用LINQ-to-SQL获取数据时遇到问题.我使用以下代码来查找用户的Web应用程序(用户名是电子邮件地址):
var referenceUser =
db.ReferenceUsers
.SingleOrDefault(rf => rf.Email == values["emailAddress"]);
Run Code Online (Sandbox Code Playgroud)
如果我输入,test@test.com
我会得到一个,ReferenceUser
但如果我打字,tESt@tESt.com
我不会.如何在选择用户时让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"并且我正在寻找"测试"或"测试"或类似时,它不起作用.我如何才能使它在文本中找到文本或字符串的一部分?谢谢
CompareTo不适合我.
我的linq查询是
var result = from c in customers
where c.CustomerID.CompareTo(txtSerchId.Text) >= 0
select` c;
Run Code Online (Sandbox Code Playgroud)
而他们得到一个例外
//////例外///////////
System.ArgumentException was caught
Message=Value does not fall within the expected range.
Run Code Online (Sandbox Code Playgroud)
我的代码是这样的
var result =
from c in customers
where c.CustomerID.CompareTo(txtSerchId.Text) >= 0
select c;
if (result != null)
{
IEnumerator<Customer> resultEnum = result.GetEnumerator();
while (resultEnum.MoveNext())
{
Customer c = (Customer)resultEnum.Current;
addToDataSet(Guid.NewGuid().ToString(), c);
}
ShowResult();
}
else
{
MessageBox.Show("No Customer found within criteria");
}
Run Code Online (Sandbox Code Playgroud)
异常就在这条线上
IEnumerator<Customer> resultEnum = result.GetEnumerator();
Run Code Online (Sandbox Code Playgroud) 我会问一个非常基本的问题,但是因为我遇到了这个问题而且我不知道为什么会发生这种情况.通常当我们比较两个字符串如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.
这段代码使用Authentication person进行登录,我的问题是密码,例如if
pass = AAaa我们在系统中输入aaaa登录,如何处理搜索中的区分大小写?
Inspector inspector = context.Inspectors.Where(i => i.InspectorUserName == userName
&& i.InspectorPssWord == passWord).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
谢谢
到目前为止我所读到的Linq(以及C#)已经进行了区分大小写的检查.
如何使其不敏感?
这是我的代码,它返回0行,我在数据库中有一条记录
bool result = Employee.SearchBy(x => x.Name.Contains("johN schulZ"));
Run Code Online (Sandbox Code Playgroud)
这返回true:
bool result = Employee.SearchBy(x => x.Name.ToLower().Contains("johN schulZ".ToLower()));
Run Code Online (Sandbox Code Playgroud)
后一个解决方案正在运行,但我想知道是否有更方便的方法.