Ehsan Sajjad
Ehsan Sajjad

Reputation: 62488

Error 25 The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'

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

Answers (3)

dotnethaggis
dotnethaggis

Reputation: 999

If you are comparing int? and int for example, you could append .Value to the nullable property.

Upvotes: 0

Ehsan Sajjad
Ehsan Sajjad

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

Iswanto San
Iswanto San

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

Related Questions