Giter Site home page Giter Site logo

Comments (5)

damieng avatar damieng commented on June 11, 2024

This kind of query is not supported at this time but you might be able to get the results you want with a similar query;

_context.Query(c => c.Id == companyId && c.Officer.Contains(term)).AsEnumerable().SelectMany(c => c.Officers)

This basically moves the SelectMany part to LINQ to Objects while retaining the Where criteria on Elasticsearch.

from elasticlinq.

ma3yta avatar ma3yta commented on June 11, 2024

@damieng How I can do if Officers is collection of objects? Thank you

_context.Query<Company>().Query(c => c.Id == companyId && c.Officer.Contains(term)).AsEnumerable().SelectMany(c => c.Officers)

from elasticlinq.

damieng avatar damieng commented on June 11, 2024

Sorry _context.Query(c => c.Id == companyId && c.Officers.Where(o => o.Name.Contains(term))).AsEnumerable().SelectMany(c => c.Officers)

from elasticlinq.

ma3yta avatar ma3yta commented on June 11, 2024

@damieng I tried but got error "Enumerable.Where method is not supported"

public IEnumerable<Officer> SearchOfficers(Guid companyId, string term)
        {
            return _context.Query<Company>().Query(c => c.Id == companyId && c.Officers.Where(o => o.Name.Contains(term)).Count() > 0)
                                            .AsEnumerable().SelectMany(c => c.Officers).ToList();
        }

from elasticlinq.

ma3yta avatar ma3yta commented on June 11, 2024

@damieng I solved it using nest. thanks for your help

public IEnumerable<Officer> SearchOfficers(Guid companyId, string term)
        {
            var searchResponse = _client.Search<Company>(s => s
                                            .Source(false)
                                            .Query(q => q.MatchAll())
                                              .Query(f => f.Nested(nf => nf
                                                .InnerHits()
                                                .Path(p => p.Officers)
                                                .Query(qq => qq.Match(m => m.Field(c => c.Officers.First().Name).Query(term))))));

            return searchResponse.Hits?.SelectMany(h => h.InnerHits.Values.SelectMany(v => v.Documents<Officer>()));
        }

from elasticlinq.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.