实体类:
public class data{ public string[] tags{get;set;} }
OnModelCreating重写:
modelBuilder.Entity<data>().Property(a => a.tags).HasConversion(v => string.Join(',', (v)), v => string.IsNullOrWhiteSpace(v) ? null : v.Split(',', StringSplitOptions.RemoveEmptyEntries));
筛选查询:
var tgs=new string[]{"test","other"}; var query=DbContext.Set<data>().where(d=>tgs.Intersect(d.tags).Count()>0);
执行后报错:the linq expression could not be translated.
尝试过这样也是报错:
var tgs=new string[]{"test","other"}; var query=DbContext.Set<data>().where(d=>tgs.Intersect(d.tags).ToList().Count>0);
var like = _articleLikesRepository.Table.ToList().Where(x => x.FromUsersId == userId && x.FromArticlesId == articleId).Count();
if (like < 1)
我查表的时候是这么查的 没查过集合 希望对你有帮助吧
这个不行的噢,我这边两个字段是数组的。 后面把tags这个数组做成子表了。。。
@尾随前行: 应该是JSON格式的吧 当时存进数据库的时候应该也是转成了JSON格式存进去的 然后存在数据库就像字符串一样 拿出来之后再JSON反序列化一下的吧
@深红宅红叶: 之前的方式是用逗号,分割的。存在数据库的是字符串。efcore给定规则后转换成数组了