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

时间:2015-07-12 01:07:34

标签: c# mongodb-csharp-2.0

我尝试将条件SortBy应用于find,如下所示:

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

但是,我收到以下错误:

"无法确定记录的序列化信息=> IIF((record.Client!= null),record.Client.Profile.FirstName,record.Profile.FirstName)。"

我是否必须在其中一个类上添加/实施 IBsonDocumentSerializer ,或者此操作无法进行?

1 个答案:

答案 0 :(得分:1)

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

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

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