使用Linq从多个表中读取

时间:2016-07-18 03:58:11

标签: c# entity-framework 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;
        }

我将在styleList和fabricList中有一个profileDetailModel,其中包含多个项目。 EG。

ProfileDetailModel

数据:裤子

  • styleList:Bell Bottom,Straight Leg,Boot fit

  • fabricList:jean-blue,jean-black,plaid

以上三个模型都是我的数据库中的表。我可以发出3个单独的查询来读取数据然后在事后组装。但有没有办法我可以做一个linq查询,一次性在主查询中包含两个数组?

1 个答案:

答案 0 :(得分:0)

试试这个:

    var newQuery = (from p in db.tblProfiles
                    select p)
                    .AsEnumerable()
                    .Select(x => new ProfileDetailModel()
                    {
                        id = x.id,
                        name = x.name,
                        styleList = styleQuery,
                        fabricList = fabricQuery
                    });