gpt4 book ai didi

c# - EF Core 过滤器枚举存储为带有 LIKE 运算符的字符串

转载 作者:行者123 更新时间:2023-12-03 23:43:17 24 4
gpt4 key购买 nike

我有一个 PersonGender 的模型enum poperty 以字符串形式存储在数据库中。
我想进行查询以按性别的子字符串过滤数据。例如,如果 query.SearchLike"Fe""em" ,我想找回每一个女性。
不幸的是,下面的代码抛出了一个异常。

builder.Entity<Person>().Property(x => x.Gender).HasConversion<string>();
public async Task<IList<Person>> ListAsync(PersonsQuery query)
{
IQueryable<Person> queryable = _context.Persons.AsNoTracking();

return await queryable
.Where(x => x.Gender.ToString().Contains(query.SearchLike))
.ToListAsync();
}
异常(exception):

The LINQ expression 'DbSet\r\n .Where(x =>x.Gender.ToString().Contains(__query_SearchLike_0))' could not betranslated. Either rewrite the query in a form that can be translated,or switch to client evaluation explicitly by inserting a call toeither AsEnumerable(), AsAsyncEnumerable(), ToList(), orToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 formore information.

最佳答案

根据我的理解,您应该使用 EF Like 函数。尝试这样的事情:

public async Task<IList<Person>> ListAsync(PersonsQuery query)
{
IQueryable<Person> queryable = _context.Persons.AsNoTracking();

return await queryable
.Where(x => EF.Functions.Like(x.Gender, "%" + query.SearchLike + "%")
.ToListAsync();
}

关于c# - EF Core 过滤器枚举存储为带有 LIKE 运算符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64514805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com