0

我正在使用 ElasticSearch Nest Fluent DSL,但似乎无法弄清楚如何创建 .Sort() 接受的排序列表。

我有各种各样的数组,我想将它们转换为与 Nest 一起使用,就像您可以使用过滤器一样:

new List<Func<QueryContainerDescriptor, QueryContainer>>();

有任何想法吗?

我认为它会是这样的:

var testSort = new List<ISort>();
foreach (var option in queryBuilder.Sort)
 {
testSort.Add(new FieldSort { Field = option.Key, Order = option.SortOrder == "ASC" ? SortOrder.Ascending : SortOrder.Descending });
 }

但是 .Sort() 不例外。

谢谢

4

1 回答 1

0

弄清楚了:

 Func<SortDescriptor<dynamic>, IPromise<IList<ISort>>> sortList = st =>
            {
                if (queryBuilder.Sort != null)
                {
                    foreach (var option in queryBuilder.Sort)
                    {    
                        if (option.SortOrder == "ASC")
                        {
                            st.Ascending(option.Key);
                        }
                        else
                        {
                            st.Descending(option.Key);
                        }
                    }
                }
                else
                {
                    st.Ascending(SortSpecialField.Score);
                }
                return st;
            };

然后在查询中添加:

.排序(排序列表)

于 2021-02-19T16:13:35.700 回答