Camillia
asked on
How can I get a column out of this join - LINQ
I got help from Fernando:
https://www.experts-exchange.com/acceptAnswer.jsp?aid=40502019
I have this LINQ. You see:
I want to select pp.Rebate from it. This column comes from the left join.
This is what I have
https://www.experts-exchange.com/acceptAnswer.jsp?aid=40502019
I have this LINQ. You see:
join pp in _dataContext.ProductsInPromotion on data.ProductId equals pp.ProductId into pInfoGroup
I want to select pp.Rebate from it. This column comes from the left join.
This is what I have
var consumerList = (from data in _dataContext.Consumers
join s in _dataContext.StateProvinces on data.StateId equals s.Id
join c in _dataContext.Countries on data.CountryId equals c.Id
join p in _dataContext.Promotions on data.PromotionId equals p.Id
join t in _dataContext.SubmissionStatus on data.SubmissionStatusId equals t.Id
join r in _dataContext.Products on data.ProductId equals r.Id
join pp in _dataContext.ProductsInPromotions on data.ProductId equals pp.ProductId into pInfoGroup
select new
{
data.Id,
data.FirstName,
data.LastName,
data.Address,
data.City,
data.PostalCode,
state = s.Name,
stateId = s.Id,
country = c.Name,
countryId = c.Id,
data.EmailAddress,
promotion = p.Code,
data.PhoneNumber,
data.PurchaseDate,
data.RetailLocation,
data.ProductSerialNumber,
status = t.Code,
product = r.ProductModel,
data.ConfirmationCode,
t.Code,
data.CreateDate,
PromotionId = p.Id,
SubmissionStatusId = t.Id,
ProductId = r.Id,
data.Filename,
PInfo = pInfoGroup.DefaultIfEmpty()
}).Where(x => x.Id == id);
ASKER
let me try. Thanks, as always.
ASKER
No, I don't see "Rebate" in intellisense. I can move it to a stored proc but I really don't want to.
If Rebate is a column in the table ProductsInPromotions then it should show up.
Is intellisense showing up on the display at all or is it just not in the list?
Is intellisense showing up on the display at all or is it just not in the list?
Expand your selection.
This is of course dependent upon Rebate being a column of the ProductsInPromotion object.
-saige-
PInfo = pInfoGroup.Select(p => p.ProductsInPromotion).FirstOrDefault()
// Or
PInfo = pInfoGroup.Select(p => p.ProductsInPromotion.Rebate).FirstOrDefault()
This is of course dependent upon Rebate being a column of the ProductsInPromotion object.
-saige-
OK, The R's are not being shown in the intelliense so I can not say if it is in it or not. If you do not see it, is it possible that this column was added to the database after you created the model? If this is the case you will need to update the model and re-compile the project. You can see if this is the case by opening up the model and find the table in the designer and see if the column Rebate shows up there.
ASKER
Yes I added it later. Let me see
To update an EF model see this link.
Update Model Wizard (Entity Data Model Tools)
Update Model Wizard (Entity Data Model Tools)
ASKER
It's linq to sql. I have the column there. Those 2 lines didn't work either. I can use stored proc. I'll play around it a bit more
From your last post, " I have the column there", Does that mean that it shows in the .dbml designer? If that is the case make sure that it is spelled the same way in both places and remember capitalization maters so Rebate is not the same as rebate.
If that does not prove to be fruitful I would need to see the project to look around and see what is going on. If it is possible to zip up the project and post it to where I can download it I will have a look. I do understand that some organizations do not allow this, so only if you can.
If that does not prove to be fruitful I would need to see the project to look around and see what is going on. If it is possible to zip up the project and post it to where I can download it I will have a look. I do understand that some organizations do not allow this, so only if you can.
ASKER
Thanks Fernando . Let me check
ASKER
The spelling is correct. I have the code here http://1drv.ms/1DH5iXm
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I'll try and post back.
ASKER
worked, thanks
Not a problem Camilla, glad to help.
Hope all is going well.
Hope all is going well.
I suspect that PInfo is returning a collection of ProductsInPromotions for each iteration of the query. So returning a single column of rebate from ProductsInPromotions will mean a collection of rebate in PInfo. Is that what you want? Or is PInfo always returning one row from the collection?
Open in new window