我确信有人问过这个问题,但我搜索了我能想到的解决方案。
我有以下数据模型来匹配SQL数据库中的表:
public class ProfileDetailModel
{
public string id { get; set; }
public string name { get; set; }
public StyleList[] styleList { get; set; }
public FabricList[] fabricList { get; set; }
}
public class StyleList
{
public string id { get; set; }
public string name { get; set; }
}
public class FabricList
{
public string id { get; set; }
public string fabricName { get; set; }
}
这是当前的查询代码:
var query = (from t in db.tblProfiles
select new ProfileDetailModel()
{
id = t.id,
name = t.name
});
var querylist = await query.ToListAsync();
(原型linq查询下面的样式和结构)
var styleQuery = (from t in db.tblStyles
select new styleList()
{
id = t.id,
name = t.name
});
var fabricQuery = (from t in db.tblFabrics
select new fabricList()
{
id = t.id,
name = t.name
});
if (queryList.Count > 0)
{
var item = queryList[0];
item.styleList = styleQuery;
item.fabricList = fabricQuery;
}
我将有一个profileDetailModel,在styleList和fabricList中有多个项目。例如
配置文件详细型号
数据:裤子
styleList:喇叭裤,直筒,适合靴子
面料清单:牛仔蓝,牛仔黑,格子
以上三个模型都是我数据库中的表。我可以发出3个单独的查询来读取数据,然后在事实发生后进行组装。但是,有没有一种方法可以进行linq查询,在一次扫描中将两个数组包括在主查询中?
试试这个:
var newQuery = (from p in db.tblProfiles
select p)
.AsEnumerable()
.Select(x => new ProfileDetailModel()
{
id = x.id,
name = x.name,
styleList = styleQuery,
fabricList = fabricQuery
});