Я не вижу, в чем проблема - например, когда я запускаю следующее в LinqPad:
void Main()
{
var client = new GraphClient(new Uri("http://localhost:7474/db/data"), "neo4j", "neo");
//var client = new BoltGraphClient(new Uri("bolt://localhost:7687"), "neo4j", "neo");
client.Connect();
client.Cypher
.Match("(p:Phenotype)")
.Return<PhenotypeSpeciesDTO>("p")
.Results.ToList().Dump("Query 1");
client.Cypher
.Match("(p:Phenotype)")
.Return((p) => new
{
phenotypeName = p.As<PhenotypeSpeciesDTO>(),
})
.Results.ToList().Dump("Query 2");
}
public class PhenotypeSpeciesDTO
{
public string Name { get; set; }
public int Id { get; set; }
}
все работает нормально. Единственное, что я могу заметить, это то, что запросы возвращают разные структуры, возможно ли это, что вы хотите сделать:
var query = WebApiConfig.GraphClient.Cypher
.Match("(p:Phenotype)")
.Return((p) => p.As<PhenotypeSpeciesDTO>())
.Results.ToList();
, поскольку это дает тот же результат, что и:
.Return<PhenotypeSpeciesDTO>("p")