我已经设置了以下型号的LiteDb。
public partial class User
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("email")]
public string Email { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("user_roles")]
public List<UserRole> UserRoles { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset CreatedAt { get; set; }
[JsonProperty("updated_at")]
public DateTimeOffset UpdatedAt { get; set; }
}
public class UserRole
{
[JsonProperty("id")]
public long Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}下面的语句使用存储库模式,并使用Linq过滤记录,如预期的那样工作。我从数据库中获得了正确的记录数。
_repository
.Query<Models.Offline.User>()
.ToList()
.Where(x => x.UserRoles.Any(r => r.Name.Equals("customer")))
.ToList();我正在尝试使用repository模式查询相同的记录,如下所示。
_repository
.Query<Models.Offline.User>()
.Where(u => u.UserRoles.Any(role => role.Name.Equals("customer")))
.ToList();`使用上面显示的语句不会返回任何记录。
我上面的陈述有什么问题?
发布于 2018-05-21 22:34:52
如果希望在数组中访问子类,可以使用index属性:
.Where(x => x.UserRoles[0].Name == "customer")
或者,您可以使用index:
_respository.EnsureIndex("User", "idx_customer", "$.UserRoles[*].Name")
,然后使用
_repository.Find<Models.Offline.User>(Query.EQ("idx_customer", name))
https://stackoverflow.com/questions/50410617
复制相似问题