首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

linq 数据库读取有关问题!

2012-12-14 
linq 数据库读取问题!!本帖最后由 wayne_lu 于 2012-04-21 22:11:10 编辑var query from a in database.

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

热点排行