读书人

linq 数据库读取有关问题!

发布时间: 2012-12-14 10:33:08 作者: rapoo

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)
时,会立即去执行查询

读书人网 >.NET

热点推荐