#entity-framework-core
Вопрос:
Я хочу использовать запрос пересечения в efcore. Примерный код выглядит следующим образом, но я сообщаю об ошибке после использования intersect
модель
public class data{
public string[] tags {get;set;}
}
создание onmodel
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);
//has an error : the linq expression could not be translated.
Комментарии:
1. Ядро EF поддерживает
Intersect
, но не с локальными коллекциями. Также свойства с преобразованием нельзя использовать непосредственно в запросе. Поэтому, вероятно, теги должны быть сопоставлены с подробной таблицей.2. Большое спасибо. Я понимаю это