Ниже приведен код, для которого генерируется ошибка:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Neo4jClient;
using Neo4jClient.Cypher;
namespace ConsoleApplication1
{
public class SNode
{
public int shelfid { get; set; }
public int floorid { get; set; }
}
public class PathsResult<TNode>
{
public IEnumerable<Node<TNode>> Nodes { get; set; }
public IEnumerable<RelationshipInstance<object>> Relationships { get; set; }
}
class Program
{
public static PathsResult<SNode> getPath(int sourceShelfId, int destinationShelfId, GraphClient client)
{
var pathsQuery =
client.Cypher
.Match("p = shortestPath((src:Node)-[*..150]-(dest:Point))")
.Where((SNode src) => src.shelfid == sourceShelfId)
.AndWhere((SNode dest) => dest.shelfid == destinationShelfId)
.Return(p => new PathsResult<SNode>
{
Nodes = Return.As<IEnumerable<Node<SNode>>>("nodes(p)"),
Relationships = Return.As<IEnumerable<RelationshipInstance<object>>>("rels(p)")
});
var res = pathsQuery.Results;
return res;
}
}
}
Ошибка, которую я получаю, заключается в следующем:
Cannot implicitly convert type System.Collection.Generic.IEnumerable<ConsoleApplication1.PathResult<ConsoleApplication1.SNode> >
to ConsoleApplication1.PathResult<ConsoleApplication1.SNode> >. An explicit conversion exists, are you missing a cast?
Насколько я понимаю, pathQuery.result должен возвращать один объект PathResult. Однако я попытался сделать приведение по приведенной выше ошибке следующим образом:
var res = pathsQuery.Results.AsEnumerable<PathsResult<SNode> >;
И теперь новая ошибка, которую он дает:
Невозможно назначить группу методов неявно типизированной локальной переменной
Где я ошибаюсь?
IEnumerable<X>
вX
. Итак, вам нужно сделать что-то вроде.First()
, где вы делаете это. Поскольку вы не указали полную ошибку и не сказали нам, где это происходит, мы мало что можем сделать. - person poke   schedule 10.06.2015