使用 CollectAs<> 时显式转换出错
Error with explicit conversion when using CollectAs<>
是的,我有一个非常简单的问题,但我一辈子都想不出真正简单的答案来解决它。
此代码应该 return 一个 'Person',包含语言和国家/地区的集合。
return client.Cypher
.Match("(person:Person)")
.Where((Person person) => person.Email == username)
.OptionalMatch("(person)-[:SPEAKS]-(language:Language)")
.OptionalMatch("(person)-[:CURRENT_LOCATION]-(country:Country)"
.Return((person, language, country) => new ProfileObject
{
Person = person.As<Person>(),
Language = language.CollectAs<Language>(),
Country = country.CollectAs<Country>()
}).Results.ToList();
它看起来对我来说是正确的,但事实并非如此,在构建时我得到了这个错误,我理解但无法解决。
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Neo4jClient.Node<Graph.Country>>' to 'Graph.Country'. An explicit conversion exists (are you missing a cast?)
语言 class 看起来像这样
public class Language
{
public string Name { get; set; }
}
ProfileObject class 看起来像这样:
public class ProfileObject
{
public Person Person { get; set; }
public Language Language { get; set; }
public Country Country { get; set; }
}
我真的卡住了,请帮忙。
CollectAs
returns一组节点。
您需要将 ProfileObject
更改为:
public class ProfileObject
{
public Person Person { get; set; }
public IEnumerable<Node<Language>> Language { get; set; }
public IEnumerable<Node<Country>> Country { get; set; }
}
在即将发布的包更新中,Node<T>
包装器已从签名中删除,因此它将只是:
public class ProfileObject
{
public Person Person { get; set; }
public IEnumerable<Language> Language { get; set; }
public IEnumerable<Country> Country { get; set; }
}
如果您想现在获得更清晰的签名,请查看 NuGet (https://www.nuget.org/packages/Neo4jClient/1.1.0-Tx00009) 上的预发布包。
是的,我有一个非常简单的问题,但我一辈子都想不出真正简单的答案来解决它。 此代码应该 return 一个 'Person',包含语言和国家/地区的集合。
return client.Cypher
.Match("(person:Person)")
.Where((Person person) => person.Email == username)
.OptionalMatch("(person)-[:SPEAKS]-(language:Language)")
.OptionalMatch("(person)-[:CURRENT_LOCATION]-(country:Country)"
.Return((person, language, country) => new ProfileObject
{
Person = person.As<Person>(),
Language = language.CollectAs<Language>(),
Country = country.CollectAs<Country>()
}).Results.ToList();
它看起来对我来说是正确的,但事实并非如此,在构建时我得到了这个错误,我理解但无法解决。
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Neo4jClient.Node<Graph.Country>>' to 'Graph.Country'. An explicit conversion exists (are you missing a cast?)
语言 class 看起来像这样
public class Language
{
public string Name { get; set; }
}
ProfileObject class 看起来像这样:
public class ProfileObject
{
public Person Person { get; set; }
public Language Language { get; set; }
public Country Country { get; set; }
}
我真的卡住了,请帮忙。
CollectAs
returns一组节点。
您需要将 ProfileObject
更改为:
public class ProfileObject
{
public Person Person { get; set; }
public IEnumerable<Node<Language>> Language { get; set; }
public IEnumerable<Node<Country>> Country { get; set; }
}
在即将发布的包更新中,Node<T>
包装器已从签名中删除,因此它将只是:
public class ProfileObject
{
public Person Person { get; set; }
public IEnumerable<Language> Language { get; set; }
public IEnumerable<Country> Country { get; set; }
}
如果您想现在获得更清晰的签名,请查看 NuGet (https://www.nuget.org/packages/Neo4jClient/1.1.0-Tx00009) 上的预发布包。