黑马程序员_使用Linq抛弃多表查询!!

" ------- android培训java培训、期待与您交流! ----------"

    public class BookSerives : BookShopEntities
    {


        private List<Books> List {

            get { return Books.Take(5).ToList(); }
        
        }

        private List<Categories> Clist {

            get { return Categories.ToList(); }
        
        }

        public List<Publishers> Plist {

            get { return Publishers.ToList(); }
        }

        public List<Books> ListBook()
        {
           
            foreach (var item in List)
            {

                try
                {
                    item.Categories.Name = Clist[item.CategoryId - 1].Name;
                    item.Publishers.Name = Clist[item.PublisherId - 1].Name;
                }
                catch 
                {
                    item.Categories.Name = "";
                    item.Publishers.Name = "";
                }
            }
            return List;
           
        }

       
    }


 

最近不知道为什么.我异常反感多表查询....人人都说LINQ慢...我就偿试怎么减降表与表之间关系的处理...随后发现一个自秘密,,

既然表与表之间的关系是相互的..那么   外键ID=ID成立....那么只要外键表ID 保持准确 也就是123456789排列...这是什么..

这就是下标...我们都知道 数组 或是集合都是从0开始的..那么外键id-1就是外键表的索引~~

但是SQL如果多表查询..却用的是遍历模式..让我感觉非常不爽...

所以就制造了上面的结构 ...

通常都是只查一张表...但是因为外键的关系 都要拖家带口多几张表...

本来查询只要45次..却因为带了几张表 多遍N次...这样负担性太高..而且也没必要..所谓外键 只取ID而不遍历才是王道...

这样 不管多少张外表  只要   外键ID-1 等于本身这条外表单个对象的索引  就不用遍历这个外键表..

所以我把三张表都用最简单的集合抽出来了..通过 下标索引外键ID..把当前需要的类别 在赋值给主表的类型.Name

实现的效果前;

实现效果后.

 

这样处理是因为: 外键表都是一些数据很固定的表  所以提前全部提取成集合存放,通过需要表的查询.利用外键ID-1的原则.瞬间替换需要的外键列~~

方便有实现..又绕开了数据库的查询处理 

传进服务器的查询语句

也只有select * from 主表

 

实现重用查询模式  把自动列生成LIST<T>  在类里面在做处理!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值