Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 包含另一个对象列表的自定义对象的实体框架_C#_Json_Entity Framework_Linq - Fatal编程技术网

C# 包含另一个对象列表的自定义对象的实体框架

C# 包含另一个对象列表的自定义对象的实体框架,c#,json,entity-framework,linq,C#,Json,Entity Framework,Linq,我试图弄清楚如何从C#Entity框架中检索自定义对象 我有来自数据库的输出 我试图将其转换为以下JSON编码格式 { DT_RowId: 50-1, donor: "0111158", serial_number: "0111158-2030RV-001", status: "Released", location:"Finished Goods", ext_dt: "08/2019", qty: "1", new_locat

我试图弄清楚如何从C#Entity框架中检索自定义对象

我有来自数据库的输出

我试图将其转换为以下JSON编码格式

{
    DT_RowId: 50-1, 
    donor: "0111158",
    serial_number: "0111158-2030RV-001",
    status: "Released",
    location:"Finished Goods",
    ext_dt: "08/2019",
    qty: "1",
    new_locations: [
        {
            "location_id":6,
            "location_name":"Post Sterilization Quarantine2"
        },
        {
            "location_id":5,
            "location_name":"Post Sterilization Quarantine1"
        },
        {
            "location_id":18,
            "location_name":"Material Review Board"
        }               
    ]
}
这是我到目前为止所拥有的…但我在如何建立新的_位置列表方面遇到了障碍

        var details = from entity in db.GetInventoryMoveDeatils(id, username)
                      select new
                      {
                          DT_RowId = entity.DT_RowId,
                          donor = entity.donor,
                          serial_lot = entity.SERIAL_NUMBER,
                          status = entity.status,
                          location = entity.location,
                          ext_dt = entity.ext_dt,
                          qty = entity.qty
                      };

        return Json(new { data = details }, JsonRequestBehavior.AllowGet);
我不确定要搜索哪些关键字,因为我不确定这在LINQ查询中被称为什么。所以我所有的搜索结果都没有返回任何有用的信息。我愿意研究它,但需要一些帮助的关键字,我应该搜索


新位置
数组的数据包含在数据库结果中的
允许位置
允许位置
系统ID下。我可以运行两个独立的LINQ查询,并在
DT\u RowId
键上连接它们。允许有X个不同位置的行。

您可以这样做:

 var details = from entity in db.GetInventoryMoveDeatils(id, username)
               group entity by entity.DT_RowId in groupedData
        select new 
        {   
            DT_RowId = groupedData.key,
                          donor = groupedData.Select(x => x.donor ).FirstOrDefault(),
                          serial_lot =  groupedData.Select(x => x.SERIAL_NUMBER).FirstOrDefault()
                          status = groupedData.Select(x => x.status).FirstOrDefault() 
                          location = groupedData.Select(x => x.location).FirstOrDefault() 
                          ext_dt = groupedData.Select(x => x.ext_dt).FirstOrDefault() 
                          qty = groupedData.Select(x => x.qty).FirstOrDefault() ,
            new_locations = groupedData.Where(x => x.DT_RowId == groupedData.key).Select( a => new 
                {
                    location_id = a.ALLOWABLE_LOCATION_SYSID,
                    location_name = a.ALLOWABLE_LOCATION
                }).ToList()
        }

要获取
新位置
,如果表之间存在关系,则应使用
包含
。如果否,则编写另一个linq查询(您不需要使用ToList()获取数据——IQueryable应该可以做到这一点),并在第一个集和第二个集之间执行
连接。现在,关于将
新位置
作为实体的一部分,您可以在
DT\u RowId
上执行apply
GroupBy
,因为您有多条记录,并选择所需的列以及位置集合。您在寻找什么值?新位置数组的数据包含在数据库中允许的_位置和允许的_位置_SYSID下的结果。我可以运行两个独立的LINQ查询,并在DT_RowId键上连接它们。允许有X个不同位置的行。