Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果嵌套数组包含值,则获取所有对象-ElasticSearch_C#_.net_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,C#,.net,elasticsearch" /> elasticsearch,C#,.net,elasticsearch" />

C# 如果嵌套数组包含值,则获取所有对象-ElasticSearch

C# 如果嵌套数组包含值,则获取所有对象-ElasticSearch,c#,.net,elasticsearch,C#,.net,elasticsearch,如果嵌套列表包含来自另一个数组的值,我想返回一个对象列表。 例如: { "ListOfMainObject": [ { "Name": "Object1", "NestedArray": [ "Value1", "Value2" ] }, { "Name": "Object2", "NestedArray"

如果嵌套列表包含来自另一个数组的值,我想返回一个对象列表。 例如:

{
  "ListOfMainObject": [
      {
          "Name": "Object1",
          "NestedArray": [
             "Value1",
             "Value2"
          ]
      },
      {
          "Name": "Object2",
          "NestedArray": [
             "Value1",
             "Value3"
          ]
      },
      {
          "Name": "Object3",
          "NestedArray": [
             "Value2",
             "Value3"
          ]
      }
]}
如果我有一个数组,例如[“Value1”],它应该返回Object1和Object2的列表。另外,如果我有数组[“Value1”,“Value2”],它应该只返回Object1,因为只有Object1包含这些值

目前,我有此筛选函数用于设置此查询,但如果我在数组中发送两个值,则会排除所有内容:

private List<Func<QueryContainerDescriptor<Unit>, QueryContainer>> GetFacetFilters(IList<string> facets)
    {
        var filters = new List<Func<QueryContainerDescriptor<Unit>, QueryContainer>>();

        if (facets == null)
        {
            return filters;
        }

        foreach (var facet in facets)
        {
            QueryContainer Filter(QueryContainerDescriptor<Unit> f) => f
                .Bool(bo => bo
                    .Must(m => m.MatchPhrase(md => md.Field(new Field("facets.visible")).Query("true")))
                    .Should(s => s.MatchPhrase(md => md.Field(new Field("facets.alias")).Query(facet))));

            filters.Add(Filter);
        }

        return filters;
    }
私有列表GetFacetFilters(IList facets)
{
var filters=新列表();
if(facets==null)
{
回流过滤器;
}
foreach(facets中的var facet)
{
QueryContainer筛选器(QueryContainerDescriptor f)=>f
.Bool(bo=>bo
.Must(m=>m.MatchPhrase(md=>md.Field(新字段(“facets.visible”)).Query(“true”))
.Should(s=>s.MatchPhrase(md=>md.Field(新字段(“facets.alias”)).Query(facet));
过滤器。添加(过滤器);
}
回流过滤器;
}
“Unit”是主对象,“Facets”是嵌套数组

提前谢谢


p.S..net elastic search

您的示例数据似乎是一个JSON集合,但您提供了c#和.net标记,因此我假设您在某个时候有能力对一组c#对象进行操作

使用LINQ,您可以返回NesteArray属性包含单独数组所有值的MainObjects子集,如下所示:

List<MainObject> mainObjectList = {...} // object collection
var requiredValues = {...} // e.g. ["Value1", "Value2"];

mainObjectList.Where(x => !requiredValues.Except(x.NestedArray).Any());
List mainObjectList={…}//对象集合
var requiredValues={…}//例如:[“Value1”、“Value2”];
mainObjectList.Where(x=>!requiredValues.Exception(x.NestedArray.Any());

是的,这是一个C#对象,但我想描述一下。但是,我需要在没有经典linq的情况下使用elasticsearch filters.Gotcha。嗯,我在那里没有经验,所以希望其他人能给你一个答案!