簡體   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