相关疑难解决方法(0)

在ODP.NET/EF连接上使用ALTER SESSION进行不区分大小写的搜索?

我有一些EF/LINQ语句,我需要不区分大小写的文本搜索,但我们的oracle数据库区分大小写.如何在连接/命令级别执行必要的ALTER SESSION语句,以便它将影响后续的同一上下文调用?

命令我想我需要运行(OTN线程)

ALTER SESSION SET NLS_SORT=BINARY_CI
Run Code Online (Sandbox Code Playgroud)

我知道Database.ExecuteSqlCommandDatabase.Connection.CreateCommand都是方法,但我无法弄清楚'何时'.如果我在创建之后但在LINQ之前手动尝试对上下文执行此操作,我必须手动打开和关闭连接,然后它似乎是与LINQ不同的事务,并且似乎不适用.

vb.net oracle entity-framework odp.net odp.net-managed

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

Linq函数类似.Net string.CompareOrdinal

我需要使用string.CompareOrdinal(...)linq查询内部来比较字符串.

string max;
string min;

var res = db.Table
            .Where(c => string.CompareOrdinal(c.Id,  min) >= 0)
            .Where(c => string.CompareOrdinal(c.Id,  max) <= 0)
            .ToList();
Run Code Online (Sandbox Code Playgroud)

代码抛出一个异常:

LINQ ti实体不会重新确定方法'Int32 CompareOrdinal(System.String,System.String)'方法,并且此方法无法转换为存储表达式.

表中有很多数据,所以我真的需要这个where子句.

有没有解决的办法?

更新

不是想要确定两个字符串是否相等 - 区分大小写.

我正在努力确定一个字符串是否在一个范围内.所以问题是

  • 有没有办法做到这一点 - 所以这适用于L2E?

显然,我不能用 string.CompareOrdinal

c# linq string comparison entity-framework-4.1

4
推荐指数
1
解决办法
1961
查看次数

默认情况下,==在c#linq中不区分大小写

我不明白为什么:

在db中,我在Members表中记录了Name ="Bob"

var a = await repository.Members.FirstOrDefaultAsync(x => x.Name == "BOB"); //is true (Entity Framework Core)

var c = repository.Members.FirstOrDefault(x => x.Name == "BOB"); //is true (LINQ)

var b = "Bob" == "BOB"; //is false
Run Code Online (Sandbox Code Playgroud)

c# sql linq sql-server

3
推荐指数
1
解决办法
561
查看次数

如何在EF中比较区分大小写的字符串?

ValidateUser使用EF 的会员提供者非常简单

public override bool ValidateUser(string username, string password)
{
    // Validate User Credentials
    var r = db.ST_Users.FirstOrDefault(
                           x => x.Username.Equals(username) && 
                                x.Password.Equals(password));
    return r != null ? true : false;
}
Run Code Online (Sandbox Code Playgroud)

true无论我是否使用balexandre或,它都会返回(查找并检索孔对象)BAleXanDre.

如何在区分大小写模式下启用EF进行比较?

我知道如何比较不区分大小写(使用StringComparison.CurrentCultureIgnoreCase重载,但我只是想要相反)

linq asp.net-membership entity-framework-4

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

在lambda表达式中使用通配符的null-coalescing运算符

我有一个包含多个输入的搜索表单 - 名字,姓氏,公司......

我想根据用户输入返回实体,或者如果没有输入任何内容,例如在姓氏字段中,则返回所有姓氏.

我相信我应该为此使用null-coalescing,就像t-sql中的"ISNULL"...

contacts = contacts.Where(s => s.firstname.ToUpper().Contains(fNameSearch.ToUpper() ?? *)
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何在这种类型的预测中使用通配符.

例如,如果fNameSearch为null或white-space,则返回firstname属性中包含"test"的所有内容...

 contacts = contacts.Where(s => s.firstname.ToUpper().Contains(fNameSearch.ToUpper() ?? "test")
Run Code Online (Sandbox Code Playgroud)

但我希望能够归还所有东西,而不仅仅是"测试".

c# linq-to-entities entity-framework

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

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

可能重复:
linq到实体区分大小写的比较

看下面的图片可以帮助您获取用户记录的原因.如果我没有错,那么实体框架就是案例敏感我用小写字母传递价值但它仍然取得了记录.为什么要取得记录?:(

在此输入图像描述

entity-framework case-sensitive c#-4.0

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