由于.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();