C# 强制在实体框架核心中使用不区分大小写的字符串.Contains
有没有办法强制LINQtoSQL执行不区分大小写的包含 我正在实体框架核心上与PostgreSQL合作。 关于上述答案,答案是否定的。没有办法在更低的水平上进一步进行荷载工况敏感性检查。您必须完全执行此人所做的操作: 下面是一个关于最新LINQ语法的示例C# 强制在实体框架核心中使用不区分大小写的字符串.Contains,c#,.net,string,entity-framework-core,case-insensitive,C#,.net,String,Entity Framework Core,Case Insensitive,有没有办法强制LINQtoSQL执行不区分大小写的包含 我正在实体框架核心上与PostgreSQL合作。 关于上述答案,答案是否定的。没有办法在更低的水平上进一步进行荷载工况敏感性检查。您必须完全执行此人所做的操作: 下面是一个关于最新LINQ语法的示例 var tickerObj = _unitOfWork.GetRepository<CurrencyPair>() .GetQueryable() // .Where
var tickerObj = _unitOfWork.GetRepository<CurrencyPair>()
.GetQueryable()
// .Where() and .Include() omitted for brevity
.SingleOrDefault(cp => string.Concat(
cp.PartialCurrencyPairs.FirstOrDefault(pcp => pcp.IsMain).Currency.Abbrv,
cp.PartialCurrencyPairs.FirstOrDefault(pcp => !pcp.IsMain).Currency.Abbrv)
.Equals(ticker, StringComparison.InvariantCultureIgnoreCase)
&& cp.CurrencySource.Abbreviation.Equals(exchangeAbbrv, StringComparison.InvariantCultureIgnoreCase));
最直接的方法是
ctx.Table.Where(c=>c.Column.ToLower().Contains(searchTerm.ToLower())
该解决方案可能与@Evk重复,但如果对同一字符串进行索引,则会导致DB跳过索引并执行表查找。需要记住的是。@aevitas不是必需的。Postgesql允许在表达式上定义索引,因此您可以在较低的(您的列)上使用索引,这样的索引将用于上面的查询。当然,仍然值得记住。
cp.CurrencySource.Abbreviation.Equals(exchangeAbbrv, StringComparison.InvariantCultureIgnoreCase)