我在从 3 个表中进行选择时遇到问题。我使用了 3 个表格,因为一个产品可以有多个图像。
然后我有我的 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/