C# 包含另一个对象列表的自定义对象的实体框架
我试图弄清楚如何从C#Entity框架中检索自定义对象 我有来自数据库的输出 我试图将其转换为以下JSON编码格式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
{
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
上执行applyGroupBy
,因为您有多条记录,并选择所需的列以及位置集合。您在寻找什么值?新位置数组的数据包含在数据库中允许的_位置和允许的_位置_SYSID下的结果。我可以运行两个独立的LINQ查询,并在DT_RowId键上连接它们。允许有X个不同位置的行。