感受一下.net中 lambda与 linq 的不同
Posted hongwei918
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了感受一下.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语句一样。不举例,自己看书。
以上是关于感受一下.net中 lambda与 linq 的不同的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 控制器不会从 LINQ lambda 捕获异常