0

我通过在两个表上应用联接从表中获取数据,但出现此错误:

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\

这是我的代码:

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;

虽然所有四列都是 int nullabe 类型,但我收到了这个错误。请帮助我。

4

3 回答 3

1

在您的 LINQ 表达式中,成员的名称不同,因此类型最终不同,因此 C# 无法确定两者之间的共同类型。

试试这个。

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;
于 2013-01-11T08:02:22.117 回答
1

我通过这种方式从表中选择数据解决了我的问题:

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();
于 2013-01-12T06:16:07.473 回答
0

如果你在比较int?和 int 例如,您可以将 .Value 附加到可为空的属性。

于 2013-04-18T11:08:56.203 回答