Trouble with LINQ
I'm having trouble understanding LINQ and how to write it in a way that I can get back the desired results. Here is the method
public IEnumerable<Furniture> GetFurnitureByHouseId(int houseId) { var selectList = (from furn in _ctx.Furniture join furnImage in _ctx.FurnitureImages on furn.FurnitureId equals furnImage.FurnitureId into furnGroup where furn.HouseId == houseId select furn).ToList(); return selectList; }
I have two tables, Furniture and FurnitureImages. I want to join them on the FurnitureId and filter them by houseId and return the data from both tables into one set. Below is how i'm attempting to handle that
[HttpGet("houses/{houseId}/furniture")] public IActionResult GetFurnitureByHouseId(int houseID) { var furnitureInHouse = _furnitureInfoRepository.GetFurnitureByHouseId(houseID); var results = new List<FurnitureModel>(); foreach(var f in furnitureInHouse) { results.Add(new FurnitureModel { Id = f.FurnitureId, Name = f.Name, UID = f.UID, CategoryId = f.CategoryId, Cost = Convert.ToDecimal(f.Cost), PurchasedFrom = f.PurchasedFrom, DatePurchased = Convert.ToDateTime(f.DatePurchased), HouseId = f.HouseId, Turns = f.Turns, //Below does not work, do I need to loop through FurnitureImages? FurnitureImages = new FurnitureImage { PictureInfo = f.FurnitureImages.PictureInfo, FurnitureId = f.FurnitureId, FurnitureImageId = f.FurnitureImages.FurnitureImageId } }); } return Ok(results); }
And these are my two models/entities
public class FurnitureImage { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int FurnitureImageId { get; set; } [Required] public int FurnitureId { get; set; } [Required] public string PictureInfo { get; set; } } public class Furniture { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int FurnitureId { get; set; } [Required] [MaxLength(50)] public string Name { get; set; } [Required] public string UID { get; set; } public Category Catgory { get; set; } [Required] public int CategoryId { get; set; } [Required] public Decimal? Cost { get; set; } public string PurchasedFrom { get; set; } public DateTime? DatePurchased { get; set; } public House House { get; set; } [Required] public int HouseId { get; set; } [Required] public int Turns { get; set; } public List<FurnitureImage> FurnitureImages { get; set; } }
I hope I explained what I'm attempting to do correctly, maybe there is something wrong with my setup? Should I set these up as one model/entity? To put some context, I split them because I will be sending form data as well as an image associated with the a piece of furniture, so I though it might be better to handle those data types separately.
0 comments:
Post a Comment