[使用HierarchyId从c#匿名类型获取值

问题描述 投票:0回答:1

我正在尝试在.net中使用SqlHierarchyId

在我的控制器中,我使用匿名类型从数据库获取值。

[HttpGet("{id}")]
public async Task<ActionResult<object>> GetDomain(int id)
{
    object domain = from x in _context.Domains.Where(x => x.DomainId == id)
                 select new
                 {
                     Id = x.DomainId,
                     Name = x.DomainName,
                     Type = x.DomainTypeId,
                     Parent = x.Parentt,
                     Path = x.Level.ToString()
                 };
    return domain;
}

然后,我想获取要转换为SqlHierarchyId的路径,以应用.Net支持的不同方法

我尝试过反射:

System.Type type = domain.GetType();
string strNode = (string) type.GetProperty("Path").GetValue(domain, null);

我有此错误:

System.NullReferenceException:对象引用未设置为实例一个对象。

当调试代码时,我发现strNode为空,但是域包含了我用Postman测试时所需的所有值。

我尝试动态:

dynamic dyn= domain;
string strNode= dyn.Path;

我有这个错误:

Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable <<> f__AnonymousType1>'不包含“路径”>的定义

我也尝试了在类似的问题上找到了其他一些命题(克隆,将匿名类型定义为类...),但没有结果。

注意:

我尝试使用匿名类型,因为当直接使用我的模型时我无法获取值。我有一个类似的转换错误。

无法将类型为'Microsoft.SqlServer.Types.SqlHierarchyId'的对象转换为类型为'Microsoft.Data.SqlClient.Server.IBinarySerialize'。

但是通过匿名,我能够获取值,所以我想访问这些值并将其立即传递给我的模型。

我正在尝试在.net中使用SqlHierarchyId。在我的控制器中,我正在使用匿名类型从数据库获取值。 [HttpGet(“ {id}”)]公共异步任务> GetDomain(int ...

c# .net anonymous-types hierarchyid
1个回答
0
投票

您的问题是domain实际上是匿名对象的IEnumerable。即使只有一个实例,select语句也会生成IEnumerable

© www.soinside.com 2019 - 2024. All rights reserved.