c# - LINQ 从 3 个表中选择 Dish/Images/ImageDish

标签 c# mysql sql linq

我在从 3 个表中进行选择时遇到问题。我使用了 3 个表格,因为一个产品可以有多个图像。

Print DB

然后我有我的 LINQ。

  public List<DishModel> GetDish(int dish)
    {
        var query = (from m in db.Dish
            join i in db.ImageDish on m.idDish equals i.idDish
            join t in db.TypeDish on m.idTypeDish equals t.idTypeDish
            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 = new List<string>()
                {
                    i.Image.urlImage
                }

            }).ToList();
        return query;
    }

有了 LINQ,我得到了

[{"Time":"asdasd","CalorificValue":"123","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["sugestao.jpeg"],"Name":"asdasd","ShortName":"asdasd","Description":"asdas","Price":"12"},{"Time":"123","CalorificValue":"12","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["sugestao.jpeg"],"Name":"asdasdasd","ShortName":"asdasd","Description":"sdasd","Price":"12"},{"Time":"123","CalorificValue":"12","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["bebida.jpeg"],"Name":"asdasdasd","ShortName":"asdasd","Description":"sdasd","Price":"12"},{"Time":"123","CalorificValue":"123","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["sugestao.jpeg"],"Name":"asdasd","ShortName":"qweqw","Description":"asdasd","Price":"12"},{"Time":"12","CalorificValue":"12","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["pexels-photo-59016.jpeg"],"Name":"azores","ShortName":"asdasd","Description":"A região do Douro localiza-se no Nordeste de Portugal, rodeada pelas serras do Marão e Montemuro. A área vitícola ocupa cerca de 40000 hectares, apesar da região se prolongar por cerca de 250000 hectares. O rio Douro e os seus afluentes, como por exemplo o Tua e o Corgo, correm em vales profundos e a maior parte das plantações são encaixadas nas bacias hidrográficas dos rios.","Price":"12"},{"Time":"12","CalorificValue":"2312","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["sugestao.jpeg"],"Name":"asdasd","ShortName":"asdas","Description":"asdasda","Price":"12"},{"Time":"12","CalorificValue":"2312","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["bebida.jpeg"],"Name":"asdasd","ShortName":"asdas","Description":"asdasda","Price":"12"},{"Time":"12","CalorificValue":"2312","BeveragesList":null,"DishEnum":0,"Id":null,"UrlImageList":["Atum-Peixe-Desenho.jpg"],"Name":"asdasd","ShortName":"asdas","Description":"asdasda","Price":"12"}]

由于图像列表,他多次选择相同的产品,我不知道该怎么办。 处理图像的最佳方法是什么?

最佳答案

您可以使用 group join 来加入菜及其所有图像:

 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           
             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 => i.Image.urlImage).ToList()
             };

关于c# - LINQ 从 3 个表中选择 Dish/Images/ImageDish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44460014/

相关文章:

javascript - 在插入数据库之前获取 UID 主键

c# - MVC - 使用 RedirectToAction() 传递数据

php - 如何避免使用 php 和 mysql 重复代码

python - 在不使用数据库软件的情况下从表中获取项目列表

mysql - cakePHP - 加入条件虚拟字段

mysql - 将 Double 类型的数据直接从 C 发送到 MySQL

sql - 在一天/月/周结束时获取值的总和

c# - 多个约束泛型类型的字典和接口(interface)

c# - CLR 是否支持静态接口(interface)?

c# - 如何在 c#/.net 中对 List<T> 进行排序