繁体   English   中英

如何使用 Linq 表达式在 MongoDB 中获取一个或多个数组元素

[英]How to get one or more array elements in MongoDB using a Linq expression

我正在研究使用 MongoDB、C# dotnet 和 Linq 进行搜索的人的注册表。 这条记录有一个人的地址数组,我需要按邮政编码进行查询,以返回与搜索的邮政编码相同的所有记录。

这是我的课

    public class Retailer : Entity<Retailer>
    {
        public PersonType PersonType { get; private set; }

        public string CompanyName { get; private set; }

        public string TradingName { get; private set; }

        public IReadOnlyCollection<RetailerAddress> Adresses
        {
            get { return _adressesList.ToArray(); }
            set { _adressesList = value.ToList(); }
        }
.
.
.
Other methods omitted for brevity
.
.
.
    }

这是 MongoDB 中持久化的对象

{
  "_id": "58beb0c5-950d-443b-943d-1580a5dfa223",
  "createdDate": "2022-07-13T17:27:50.7567299-03:00",
  "active": true,
  "PersonType": "PJ",
  "CompanyName": "Rotisseria Coma e Viva",
  "TradingName": "Coma e viva",
  "Adresses": [
    {
      "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "createdDate": "2022-07-13T17:27:50.745713-03:00",
      "active": true,
      "RetailerId": "58beb0c5-950d-443b-943d-1580a5dfa223",
      "Street": "Av Principal",
      "Number": "395",
      "Neighborhood": "Vila Soco",
      "Complement": "Em Frente A Farmácia",
      "City": "Santo André",
      "ZipCode": "09190000",
      "IbgeCityCode": "3547809",
      "State": "SP",
      "Country": "BR"
    },
    {
      "_id": "3fa85f64-5717-4562-b3fc-2c963f66afa7",
      "createdDate": "2022-07-13T17:27:50.745713-03:00",
      "active": false,
      "RetailerId": "58beb0c5-950d-443b-943d-1580a5dfa223",
      "Street": "Av Secondary",
      "Number": "395",
      "Neighborhood": "Vila Country",
      "Complement": "Ao lado do posto de gasolina",
      "City": "Pirapora",
      "ZipCode": "09190000",
      "IbgeCityCode": "3547809",
      "State": "SP",
      "Country": "BR"
    }
  ]
}

我想得到所有活跃的人,他们也有一个活跃的地址和一个等于 09190000 的邮政编码。我尝试使用这样的 linq 表达式:

var result = await _retailerRepository.GetAsync(retailer => retailer.Active && retailer.Adresses.Where(address => address.ZipCode == zipCode));

但我收到此错误消息:运算符'&&'不能应用于'bool'和'IEnumerable'类型的操作数

我应该如何更正此消息并返回包含搜索到的邮政编码的所有记录?

var result = await _retailerRepository.GetAsync(retailer => retailer.Active && 零售商.Adresses.Any(address => address.ZipCode == zipCode));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM