EF Core在将字符串与CompareOptions比较时抛出NullReferenceException

时间:2018-07-13 07:07:14

标签: postgresql asp.net-core entity-framework-core ef-core-2.0

我有一个带有字符串Name属性的Worker实体,只想过滤Name包含某些特定字符串的所有Worker(来自前端文本输入)。

当我使用以下方法进行过滤时:

_context.Workers.Where(w => w.Name.ToUpper().Contains(filter.ToUpper()).ToList()

它正在工作,但不能解决过滤器术语中的某些变音符号。

当我尝试使用时:

var compareInfo = CultureInfo.InvariantCulture.CompareInfo;
 _context.Workers.Where(w => compareInfo.IndexOf(w.Name, filter, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) > -1).ToList()

我得到System.NullReferenceException: 'Object reference not set to an instance of an object.' 和控制台An exception occurred in the database while iterating the results of a query for context type 'Project.MyDbContext'.

我也尝试过

_context.Workers.Where(w => compareInfo.IndexOf((w.Name??""), filter, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase) > -1).ToList()

执行空检查,但相同。

有人有同样的问题吗?或者也许知道在这里有什么可以改变的地方,以便我能完成变音符号的搜索?

谢谢!

0 个答案:

没有答案