在 IFindFluent .SortBy 块中使用条件子句

Using conditional clause in IFindFluent .SortBy block

我正在尝试对查找应用条件排序,如下所示:

var findFluent = Collection.Find (...)
    .SortBy (record => record.IsActive)
    .SortBy (record => record.Client != null
      ? record.Client.Profile.FirstName 
      : record.Profile.FirstName);

但是,我收到以下错误:

"Unable to determine the serialization information for record => IIF((record.Client != null), record.Client.Profile.FirstName, record.Profile.FirstName)."

我是否必须 add/implement IBsonDocumentSerializer 在有问题的 类 之一上,或者这个操作是不可能的?

我最终只是根据条件中的逻辑添加了一个新的 .SortBy () 子句:

var findFluent = Collection.Find (...)
   .SortBy (record => record.IsActive)
   .SortBy (record => record.Client.Profile.FirstName) 
   .SortBy (record => record.Profile.FirstName);

如果值为空或无法计算,驱动程序似乎会忽略排序。