C# 无法确定序列化信息IIF

C# 无法确定序列化信息IIF,c#,mongodb-csharp-2.0,C#,Mongodb Csharp 2.0,我正试图为我的C代码编写一个价格范围查询,根据产品的货币类型,我需要查询正确的字段 var minPrice = builder.Gte(s => s.Price.CurrencyCode == "USD" ? s.Price.Usd : s.Price.Foreign, filter.MinPrice); var maxPrice = builder.Lte(s => s.Price.CurrencyCode == "USD" ? s.Price.Usd : s.Price.For

我正试图为我的C代码编写一个价格范围查询,根据产品的货币类型,我需要查询正确的字段

var minPrice = builder.Gte(s => s.Price.CurrencyCode == "USD" ? s.Price.Usd : s.Price.Foreign, filter.MinPrice);
var maxPrice = builder.Lte(s => s.Price.CurrencyCode == "USD" ? s.Price.Usd : s.Price.Foreign, filter.MaxPrice);
但是,当我运行代码来测试这一点时,我得到以下错误:

无法确定s=>IIF((s.Price.CurrencyCode==“USD”)、s.Price.USD、s.Price.Foreign)的序列化信息


如果我取出三元数据,只查找美国价格,它工作得很好,但我需要能够让它同时查找非美国价格,我是否做错了什么?

不确定这里发生了什么(我认为这种查询还不受支持),但您是否可以这样重写查询:

    var minPrice = (builder.Where(s => s.Price.CurrencyCode == "USD") & builder.Gte(s => s.Price.Usd, filter.MinPrice))
                 | (builder.Where(s => s.Price.CurrencyCode != "USD") & builder.Gte(s => s.Price.Foreign, filter.MinPrice));
    var maxPrice = (builder.Where(s => s.Price.CurrencyCode == "USD") & builder.Lte(s => s.Price.Usd, filter.MaxPrice))
                 | (builder.Where(s => s.Price.CurrencyCode != "USD") & builder.Lte(s => s.Price.Foreign, filter.MaxPrice));