Dan*_*nte 0 c# linq linq-to-sql
我正在开发一个需要使用的WinForms项目Linq-To-Sql.我已经能够使用该SqlMetal工具创建我的DataContext ,并进行一些查询.但是现在我遇到了一个我无法解决的问题.
我想做一个LEFT OUTER JOIN如下:
MyDatabase db = new MyDatabase(...);
var query = from p in db.ParentTable
join t in db.ChildTable on new {A = p.child_ID, B = p.OtherID}
equals new {A = t.ID, B = t.OtherID} into j1
from c in j1.DefaultIfEmpty()
select new
{
...
};
Run Code Online (Sandbox Code Playgroud)
当我编写此查询时,在编译时会在join单词中引发错误:
join子句中某个表达式的类型不正确.调用'GroupJoin'时类型推断失败
我知道这个错误是由之间的比较造成p.child_ID而且t.ID因为p.child_ID是int?和t.ID是int.但是,我该如何解决这个问题呢?如何在LEFT OUTER JOIN没有此错误的情况下执行?
p.child_ID是int?因为这列被标记为IS NULL在SQL.
希望有人可以帮助我,提前谢谢.
您可以使用GetValueOrDefault()方法.它检索当前Nullable对象的值或对象的默认值.
就你的例子而言:
var query = from p in db.ParentTable
join t in db.ChildTable on new {A = p.child_ID.GetValueOrDefault(0), B = p.OtherID}
equals new {A = t.ID, B = t.OtherID} into j1
from c in j1.DefaultIfEmpty()
select new
{
...
};
Run Code Online (Sandbox Code Playgroud)
如果p.child_ID变为null,则返回0.希望这会有所帮助!!
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |