elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# Elasticsearch嵌套初始化的Termskyry对象不';不允许列出整数

C# Elasticsearch嵌套初始化的Termskyry对象不';不允许列出整数,c#,elasticsearch,nest,C#,elasticsearch,Nest,我想使用nest及其对象初始值设定项语法在Elasticsearch上构建一个动态查询。我想将表示位置ID的整数列表传递给TermsQuery对象,我将使用该对象构建BoolQuery,并将其传递给SearchRequest。TermsQUery对象接收一个字符串列表,没有任何问题,但是当涉及整数时,它返回一个强制转换问题。暗号 //term locations DOESNT WORK List<int> locationsTest = new Lis

我想使用nest及其对象初始值设定项语法在Elasticsearch上构建一个动态查询。我想将表示位置ID的整数列表传递给TermsQuery对象,我将使用该对象构建BoolQuery,并将其传递给SearchRequest。TermsQUery对象接收一个字符串列表,没有任何问题,但是当涉及整数时,它返回一个强制转换问题。暗号

        //term locations DOESNT WORK
        List<int> locationsTest = new List<int>();
        locationsTest.Add(1);
        locationsTest.Add(2);
        locationsTest.Add(3);
        TermsQuery locationstTerm = new TermsQuery()
        {
            Name = "Locations",
            Boost = 1.1,
            Field = "LocationId",
            Terms = locationsTest
        };

        //terms Aggregation type WORKS FINE
        List<string> types = new List<string> { "ParkedBy", "CheckedInBy", "RetrivedBy" };
        TermsQuery aggregationsTerm = new TermsQuery()
        {
            Name = "AggregatorType_Query",
            Boost = 1.1,
            Field = "AggregatorType",
            Terms = types
        };
        queryContainers.Add(aggregationsTerm);
        

        BoolQuery boolQuery = new BoolQuery()
        {
            Filter=queryContainers

        };

        var searchRequest = new SearchRequest();
        searchRequest.SearchType = SearchType.QueryThenFetch;
        searchRequest.From = 0;
        searchRequest.Size = DEFAULT_SCROLL_SIZE;
        searchRequest.Query = boolQuery;


        var searchResponse = Get().SearchAsync<List<AggregationHolder>>(new SearchRequest("0___aggregate"));
//术语位置不起作用
列表位置ST=新列表();
位置测试添加(1);
位置测试添加(2);
位置测试添加(3);
TermsQuery locationstTerm=新TermsQuery()
{
Name=“地点”,
增压=1.1,
Field=“LocationId”,
术语=位置测试
};
//术语聚合类型工作正常
列表类型=新列表{“ParkedBy”、“checkedby”、“retriedby”};
TermsQuery聚合Term=新的TermsQuery()
{
Name=“AggregatorType\u查询”,
增压=1.1,
Field=“AggregatorType”,
术语=类型
};
queryContainers.Add(聚合术语);
BoolQuery BoolQuery=新建BoolQuery()
{
过滤器=查询容器
};
var searchRequest=新的searchRequest();
searchRequest.SearchType=SearchType.QueryThenFetch;
searchRequest.From=0;
searchRequest.Size=默认的滚动大小;
searchRequest.Query=boolQuery;
var searchResponse=Get();
错误为“无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.IEnumerable”。存在显式转换(是否缺少强制转换?)
术语
是一个
IEnumerable
,因此您需要将
整数
框起来,因为
Int32
字符串
不同,是一种值类型:

TermsQuery locationstTerm = new TermsQuery()
{
    Name = "Locations",
    Boost = 1.1,
    Field = "LocationId",
    Terms = locationsTest.Select(x => (object)x).ToArray()
};

很有效,谢谢。