感受一下.net中 lambda与 linq 的不同

lambda:

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

linq:

        ids.Add((
                    from r in _hahahacontext.hahahamodel
                    where (r.name == "张宏伟"&& r.age == 18)
                    select r.id
                    ).FirstOrDefault()
                    .ToString()
                    );  

发现木有,linq 后面还是用了 lambda,我没找到linq 中类似取 top1 的方法, 功能上感觉linq要少一些,但是涉及到多表联查的时候,那真的是linq看起来更清晰,而lambda的话可能会把你搞乱。

比如:(这是纯 lambda,经测试是正确的联查 )

viewModel.fields = new SelectList(
                _hahahacontext
                .hahahamodel1
                .Where(
                    a => _hahahacontext
                    .hahahamodel2
                    .Where(            //  过滤和联查都是放到一起的,容易搞乱
                        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语句一样。不举例,自己看书。

猜你喜欢

转载自www.cnblogs.com/hongwei918/p/11420728.html