首页 新闻 搜索 专区 学院

efcore怎么去查询集合的交集?

0
悬赏园豆:10 [已解决问题] 解决于 2021-11-08 19:43

实体类:

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); 
尾随前行的主页 尾随前行 | 初学一级 | 园豆:18
提问于:2021-10-14 18:37
< >
分享
最佳答案
0


var like = _articleLikesRepository.Table.ToList().Where(x => x.FromUsersId == userId && x.FromArticlesId == articleId).Count();
if (like < 1)
我查表的时候是这么查的 没查过集合 希望对你有帮助吧

收获园豆:10
深红宅红叶 | 菜鸟二级 |园豆:212 | 2021-10-20 16:08

这个不行的噢,我这边两个字段是数组的。 后面把tags这个数组做成子表了。。。

尾随前行 | 园豆:18 (初学一级) | 2021-11-03 20:44

@尾随前行: 应该是JSON格式的吧 当时存进数据库的时候应该也是转成了JSON格式存进去的 然后存在数据库就像字符串一样 拿出来之后再JSON反序列化一下的吧

深红宅红叶 | 园豆:212 (菜鸟二级) | 2021-11-05 20:22

@深红宅红叶:  之前的方式是用逗号,分割的。存在数据库的是字符串。efcore给定规则后转换成数组了

尾随前行 | 园豆:18 (初学一级) | 2021-11-08 19:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册