lambda: linq: 發現木有,linq 後面還是用了 lambda,我沒找到linq 中類似取 top1 的方法, 功能上感覺linq要少一些,但是涉及到多表聯查的時候,那真的是linq看起來更清晰,而lambda的話可能會把你搞亂。 比如:(這是純 lambda,經測試是正確的聯查 ) 但 ...
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語句一樣。