使用Linq从多个表中读取



我确信有人问过这个问题,但我搜索了我能想到的解决方案。

我有以下数据模型来匹配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
                    });

相关内容

  • 没有找到相关文章

最新更新