Reputation: 62488
I am getting data from a table by applying join on two tables but i am getting this error:
Error 40 The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'. C:\Documents and Settings\Ashir\My Documents\OpenLearningSolutions08-01-2013\OpenLearningSolutions\purchase.aspx.cs 70 21 C:\...\OpenLearningSolutions\
here is my code:
OLSContainer ols = new OLSContainer();
var reSet = from l in ols.LEVEL_COURSE
join lp in ols.PACKAGES
on new { l.course_ID, l.levelID } equals new { lp.course_ID, lp.level_ID }
select l;
although all the four columns are of type int nullabe but i am getting this error. Kindly help me.
Upvotes: 0
Views: 2199
Reputation: 999
If you are comparing int? and int for example, you could append .Value to the nullable property.
Upvotes: 0
Reputation: 62488
I solved my problem by selecting data from tables this way:
OLSContainer ols = new OLSContainer();
var reSet = (from l in ols.LEVEL_COURSE
from p in ols.PACKAGES
where l.course_ID == p.course_ID && l.levelID == p.level_ID && l.course_ID==courseID
select new { l.levelID, l.levelName }).Distinct();
Upvotes: 1
Reputation: 18569
In your LINQ expression, the names of the members are different so the types end up being different so C# cannot figure out the common type between the two.
Try this.
OLSContainer ols = new OLSContainer();
var reSet = from l in ols.LEVEL_COURSE
join lp in ols.PACKAGES
on new { l.course_ID, l.levelID } equals new { course_ID = lp.course_ID, levelID = lp.level_ID }
select l;
Upvotes: 1