解释?当LEFTOUTERJOIN时,Linq问题int与int我正在处理一个需要使用Linq-To-Sql的WinForms项目。我已经能够使用SqlMetal工具来创建我的DataContext,并进行一些查询。但是现在我有一个我无法解决的问题。我正在尝试像这样进行LEFTOUTERJOIN:MyDatabasedb=newMyDatabase(...);varquery=frompindb.ParentTablejointindb.ChildTableonnew{A=p.child_ID,B=p.OtherID}等于new{A=t.ID,B=t.OtherID}intoj1fromcinj1.DefaultIfEmpty()选择新的{...};当我写这个查询时,在连接的编译时抛出一个错误:连接子句中的表达式不是正确的类型。调用“GroupJoin”时类型推断失败我知道这个错误是由p.child_ID和t.ID之间的比较引起的,因为p.child_ID是int?t.ID是整数。但是,我该如何解决这个问题呢?如何在没有此错误的情况下执行LEFTOUTERJOIN?p.child_ID是整数吗?因为此列在SQL中被标记为ISNULL。希望有人能帮助我,在此先感谢。您可以使用GetValueOrDefault()方法。它检索当前Nullable对象的值或对象的默认值。就您的示例而言:varquery=frompindb.ParentTablejointindb.ChildTableonnew{A=p.child_ID.GetValueOrDefault(0),B=p.OtherID}等于new{A=t.ID,B=t.OtherID}intoj1fromcinj1.DefaultIfEmpty()selectnew{...};如果p.child_ID变为null,则返回0。希望这可以帮助!!第一个问题是ThepropertynameshouldbethesameassaidcasperOne?,但第二个问题是您将nullable-int、p.child_ID与non-nullable-int、t.ID组合在一起。所以你可以这样使用null合并运算符:(int)(p.child_ID??default(int))在这种情况下,如果p.child_ID不为null则返回它,否则返回default(int),即0。查询将是:以上是C#学习教程:Int?Linq题中LEFTOUTERJOIN比较中的int和int共享所有内容。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——varquery=frompindb.ParentTablejointindb.ChildTableonnew{A=(int)(p.child_ID??default(T)),B=p.OtherID}equalsnew{A=t.ID,B=t.OtherID}intoj1fromcinj1.DefaultIfEmpty()selectnew{//...};本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
