Elasticsearch.Nest 教程系列 9-5 转换:Property name inference | 属性名推断

  • 本系列博文是“伪”官方文档翻译(更加本土化),并非完全将官方文档进行翻译,而是在查阅、测试原始文档并转换为自己真知灼见后的“准”翻译。有不同见解 / 说明不周的地方,还请海涵、不吝拍砖 :)

  • 官方文档见此:https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/introduction.html

  • 本系列对应的版本环境:ElasticSearch@7.3.1,NEST@7.3.1,IDE 和开发平台默认为 VS2019,.NET CORE 2.1


在 lambda 表达式 “主体” 上追加后缀

可以将后缀追加到 lambda 表达式的主体上,这在以下情况下很有用:

  • 将POCO属性映射为多字段,并且希望对 lambda 表达式使用强类型访问:将后缀追加到生成的字段名称中,以便访问多字段的特定子字段。

.Suffix() 扩展方法可用于此目的,并且当序列化以此方式追加后缀的表达式时,序列化的属性名称将解析为最后一个标记:

1
2
Expression<Func<Project, object>> expression = p => p.Name.Suffix("raw");
Expect("raw").WhenSerializing<PropertyName>(expression);

在 lambda 表达式上追加后缀

可以使用.ApplySuffix() 扩展方法将后缀直接应用于 lambda 表达式:

1
2
3
Expression<Func<Project, object>> expression = p => p.Name;
expression = expression.AppendSuffix("raw");
Expect("raw").WhenSerializing<PropertyName>(expression);