感受一下.net中用 lambda与 linq 做数据集过滤的不同

lambda:

          ids.Add(
                    _hahahacontext
                    .hahahamodel
                    .FirstOrDefault(    
                        a =>                  //lambda做过滤
                        a.name == "张宏伟" 
                        && a.age== 18
                        )
                    .id
                    .ToString()
                    );

 

linq:

        ids.Add((
                    from r in _hahahacontext.hahahamodel        // linq 做查询过滤
                    where (r.name == "张宏伟"&& r.age == 18)       
                    select r.id
                    ).FirstOrDefault()
                    .ToString()
                    );  

 

涉及到多表联查的时候,那真的是linq看起来更清晰,而lambda的话可能会把你搞乱。

比如:

viewModel.fields = new SelectList(
                _hahahacontext
                .hahahamodel1
                .Where(
                    a => _hahahacontext
                    .hahahamodel2
                    .Where(            //  lambda 过滤和联查都是放到一起的,容易搞乱
                        b =>
                            a.REF_ENUMID == "-5136816235353979"
                            && b.REF_ENUMID == "-5136816235353979"
                            && a.STATE == "1"
                            && a.PARENT_ID == b.ID     //表关联
                            && b.SHOWVALUE != "欧洲"
                        )
                    .Any()
                    )
                .Select(a => a.SHOWVALUE)
                .ToArray()
                .Prepend("")
                .Distinct()
                .ToList()
                .OrderBy(a => a.ToString()));

但是,linq 中可以用“ join ” 来联查,如同sql语句一样。

posted on 2019-08-27 20:42  张宏伟同学  阅读(697)  评论(1编辑  收藏  举报

导航