我有以下查询:
var query = (from t1 in table1.Where(c => c.ServiceID == 2 && c.IsDeleted == 1)
from t2 in table2.Where(c => c.RelServiceBonID == t1.RelServiceBonID && c.IsDeleted == 1).DefaultIfEmpty()
from t3 in table3.Where(c => c.BonID == t1.BonID && c.UserID == 8 && c.IsDeleted == 1).DefaultIfEmpty()
from t4 in table4.Where(c => c.BonID == t1.BonID && c.IsDeleted == 1)
select new
{
t3.UserID, t2.SubServiceID,
});
query.Dump();
Run Code Online (Sandbox Code Playgroud)
当我运行时,我收到以下错误:
无法将null值分配给类型为System.Int32的成员,该类型是非可空值类型.
该UserID字段是主键,我无法将其设置为可为空!
我怎么能传递这个错误?
Ger*_*old 10
UserID字段是主键,我不能将其设置为可为空
正如hvd在下面解释的那样,因为你实际上有一个外连接,UserID所以仍然可以为null.除此之外,SubServiceID也可以为null.通常它有助于将罪魁祸首变为可空类型:
select new
{
UserID = (int?)t3.UserID,
SubServiceID = (int?)t2.SubServiceID
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4860 次 |
| 最近记录: |