linq 数据库读取问题!!
本帖最后由 wayne_lu 于 2012-04-21 22:11:10 编辑
var query = from a in database.T_ExpressRecord
join b in database.T_ExpressRecordContext
on a.RecordID equals b.RecordID
where a.ExpressID == ecompany.ExpressID && a.Number.Trim().ToUpper() == number.Trim().ToUpper()
orderby b.Time descending
select new { Context = b.Context, Time = b.Time };
if (query != null && query.Count() > 0)
{
expressList = new List<ExpressDelivery>();
foreach (var q in query)
{
expressList.Add(new ExpressDelivery()
{
Time = q.Time,
Context = q.Context
});
}
isContinue = false;
}
在用 linq 读取数据库的时候,上面的代码怎么会产生二个查询,一个查询是查整个数据的时候,另外一个是 count > 0的时候,为什么判断 count 的时候还为再查一次数据库 ?
[最优解释]
本帖最后由 q107770540 于 2012-04-21 22:20:43 编辑
expressList = (from a in database.T_ExpressRecord
join b in database.T_ExpressRecordContext
on a.RecordID equals b.RecordID
where a.ExpressID == ecompany.ExpressID && a.Number.Trim().ToUpper() == number.Trim().ToUpper()
orderby b.Time descending
select new ExpressDelivery{ Context = b.Context, Time = b.Time }).ToList();
isContinue==expressList.Count()==0;
//你的代码是否可以这样修改一下 来简化一下代码?
[其他解释]
坐等caohzy大神
[其他解释]
.Count() 是非延迟查询操作符 破坏了LINQ的延迟查询特性
当代码执行到 if (query != null && query.Count() > 0)
时,会立即去执行查询