Код: Выделить всё
{
code: "123",
data: {
other_code: "456",
}
}
< /code>
class: < /p>
public class MyClass
{
[BsonElement("code")]
public string Code { get; set; }
[BsonElement("data.other_code")] //
А потом я хочу иметь возможность использовать его в печатном запросе, как это: < /p>
var filter = Builders.Filter.Where(x => x.OtherCode == "456")
< /code>
Сгенерированный фильтр использует мою строку с точечной нотацией: < /p>
"data.other_code" : "456"
< /code>
Но когда я выполняю запрос с помощью: < /p>
List results = collection.Find(filter).ToList();
Я знаю, что могу сделать что -то вроде этого:
public class MyClass
{
[BsonElement("code")]
public string Code { get; set; }
[BsonElement("data")]
public Data Data { get; set; }
[BsonIgnore]
public string OtherCode => Data?.OtherCode
}
public class Data
{
[BsonElement("other_code")]
public string OtherCode{ get; set; }
}
< /code>
Но я хотел бы не создавать класс каждый раз, когда мне нужно сопоставить вложенное поле. метод Deserialize никогда не называется.
Есть мысли о том, как я могу это сделать?
Спасибо за вашу помощь!
Подробнее здесь: https://stackoverflow.com/questions/794 ... flat-class