Mustafa Düman
Mustafa Düman

Reputation: 152

neo4jclient: how do we return node label and properties in one query?

        var pubs = client.Cypher
            .Match("(s)")
            .Where("s:APublisher OR s:BPublisher OR s:CPublisher OR s:DPublisher ")
                           .Return(s => s.As<Publisher>())
                           .Results.ToList<Publisher>();

With above query, all properties of nodes are returned and "Publisher" objects created for each node.

How can i get node labels as well, and set it as "Labels" property of newly created "Publisher" object?

Thank you..

Upvotes: 0

Views: 428

Answers (1)

ceej
ceej

Reputation: 1893

You need to extract the labels using the appropriate function and assign them to your objects Labels property. Try something like

var pubs = client.Cypher
    .Match("(s)")
    .Where("s:APublisher OR s:BPublisher OR s:CPublisher OR s:DPublisher ")
    .Return(s => new {
        Pub = s.As<Publisher>()
        PubLabels = s.Labels() })
    .Results
    .ToList();

var pubsList = new List<Publisher>(pubs.Count);
for each (var pub in pubs)
{
    var publisher = pub.Pub;
    publisher.Labels = pub.PubLabels;
    pubsList.Add(publisher);
}

Upvotes: 1

Related Questions