我有一个使用 EF Core 映射到 Cosmos DB 容器的类 Entity。该类具有类型为
Labels
的属性 Dictionary<string, string>
。我如何找到该类的所有具有 Labels["thing"] == "one"
的实例。该行:context.Entities.Where(e => e.Labels["thing"] == "one").ToList()
抛出异常:
System.InvalidOperationException:无法翻译 LINQ 表达式
。要么以可翻译的形式重写查询,要么切换到客户评估...DbSet<Entity>().Where(e => e.Labels.get_Item("thing") == "one")
要在 EF 中查询具有 Dictionary
var results = context.Entities
.Where(e => e.Labels.ContainsKey("thing") && e.Labels["thing"] == "one")
.ToList();
或者在数据库不处理过滤的情况下我不会推荐这种其他方法
var results = context.Entities
.ToList()
.Where(e => e.Labels.ContainsKey("thing") && e.Labels["thing"] == "one")
.ToList();