当查询调用AsEnumerable时,如何使oData不区分大小写



由于.NET Core 3,如果不首先调用AsEnumerable或ToList,我们就无法再使用GroupBy。

调用AsEnumerable的问题在于,它使oData查询区分大小写。此具有"aaaa"的筛选器找不到"A",例如:

https://localhost/myweb.api/api/mymethod?$filter=包含(名称,%20%27aaa%27(

我怎么能让这个案子再次变得麻木不仁呢?

这不是生产代码,只是一个例子:

public IQueryable<Dto> GetDto(
{
return (from a in _context.Names
select new Dto
{
Name = a.Name
})
.AsEnumerable() // this is needed for the group by to work
.GroupBy(x => new { x.Name })
.Select(x => new Dto
{
Name = x.Key.Name
})
.AsQueryable();
}

您可以通过制作.tlower((或.toUpper((来尝试相同的情况,并应用where条件来过滤记录:

var searchText = "A";
return (from a in _context.Names
select new Dto
{
Name = a.Name
})
.Where(x=>x.Name.ToLower().Contains(searchText.ToLower()))
.AsEnumerable() 
.GroupBy(x => new { x.Name })
.Select(x => new Dto
{
Name = x.Key.Name
})
.AsQueryable();

最新更新