有人能帮我弄清楚这个问题吗?
下面的代码运行良好,并进入if语句。
foreach (var m in msg)
{
if (string.IsNullOrEmpty(m.PhoneNumber))
{
m.PhoneNumber = (from c in db.Customers
where c.CustomerID == m.CustomerID
select c.PhoneNumber).Single();
}
}
然而,在下面的代码中phoneNumber从未被设置。
foreach (var m in msg.Where(z => (z.PhoneNumber == null || z.PhoneNumber == "")))
{
m.PhoneNumber = (from c in db.Customers
where c.CustomerID == m.CustomerID
select c.PhoneNumber).Single();
}
我认为这是因为上面的代码实际上对表达式进行了评估,而下面的代码没有。如果是这样的话,您如何在未评估的LINQ查询中检查null呢? 编辑 为了避免混淆,这里展示两种情况下msg的填充方式
var msg = from m in db.Messages
where (m.StatusID == (int)MessageStatus.Submitted && m.MessageBoxTypeID == (int)MessageBoxType.Outbox)
select m;
msg
的代码吗? - DouglasConsole.Out
(或文件),并查看生成的实际查询。手动运行相同的查询以查看结果。代码看起来应该能够正常工作,但显然还有其他问题。 - tvanfosson