C# Linq,Json,从数据库中选择产品

C# Linq,Json,从数据库中选择产品,c#,mysql,json,linq,C#,Mysql,Json,Linq,我有三桌的菜、酒和建议。 然后,我们的想法是使用桌子建议桌子来放置菜肴和葡萄酒,其中一个相互建议。 我使用的是LINQ,但是当一个产品没有建议时,他不会添加到json中 var query = (from m in db.Dish join t in db.TypeDish on m.idTypeDish equals t.idTypeDish join i in db.ImageDish on m.idDish equals i.idDish i

我有三桌的菜、酒和建议。 然后,我们的想法是使用桌子建议桌子来放置菜肴和葡萄酒,其中一个相互建议。 我使用的是LINQ,但是当一个产品没有建议时,他不会添加到json中

var query = (from m in db.Dish
            join t in db.TypeDish on m.idTypeDish equals t.idTypeDish
            join i in db.ImageDish on m.idDish equals i.idDish into g
            join s in db.Suggestion on m.idDish equals s.idDish
            join si in db.ImageWine on s.idWine equals si.idWine into f
            where m.idTypeDish == dish

            select new DishModel()
            {
                Name = m.name,
                CalorificValue = m.calorificValue,
                Price = m.price,
                ShortName = m.shortName,
                Time = m.manufactureTime,
                Description = m.description,
                UrlImageList = g.Select(i => _url + i.Image.urlImage).ToList(),
                BeveragesList = new List<BeverageModel>()
                {
                    new BeverageModel()
                    {
                        Name = s.Wine.name,
                        ShortName =  s.Wine.shortName,
                        Price =  s.Wine.price,
                        Description = s.Wine.description,
                        AlcoholContent = s.Wine.alcoholContent,
                        WineEnum = WineEnum.WhiteWine,
                        Region =  s.Wine.Region.name,
                        WineCaste =  s.Wine.wineCaste,
                        UrlImageList = f.Select(i => _url+i.Image.urlImage).ToList(),
                    }
                }
            }).ToList();


        return query;
var query=(从db.Dish中的m开始)
在m.idTypeDish上的db.TypeDish中加入t等于t.idTypeDish
在m.idDish上的db.ImageDish中加入i.idDish等于在g中加入i.idDish
在db中加入s。关于m.idDish的建议等于s.idDish
在s.idWine上的db.ImageWine中加入si.idWine等于在f中加入si.idWine
其中m.idTypeDish==dish
选择新模型()
{
Name=m.Name,
热值=m.热值,
Price=m.Price,
ShortName=m.ShortName,
时间=m.制造时间,
Description=m.Description,
UrlImageList=g.Select(i=>\u url+i.Image.urlImage).ToList(),
BeveragesList=新列表()
{
新的BeverageModel()
{
Name=s.Wine.Name,
ShortName=s.Wine.ShortName,
价格=葡萄酒价格,
Description=s.Wine.Description,
酒精含量=s.Wine.酒精含量,
WineEnum=WineEnum.WhiteWine,
Region=s.Wine.Region.name,
WineCaste=s.Wine.WineCaste,
UrlImageList=f.Select(i=>rl+i.Image.urlImage).ToList(),
}
}
}).ToList();
返回查询;
现在我在DB上有两个项目,他只发送了一个,因为另一个没有建议。 错误可能在连接上,但我是Linq的新手


谢谢。

尝试左外连接可能重复。见msdn:嘿,谢谢,但现在我有一个问题,他是重复的数据,因为图像的建议,我把2左外连接的建议和图像的建议。