Dim entName = "Some Auto Dealer"
Dim whereEntity As Expression(Of Func(Of Entity, Boolean)) = Function(en) en.ENTY_Name = entName
Dim login = Repository(Of Entity).Create().FindSingle(whereEntity)
Dim whereDealer As Expression(Of Func(Of Dealer, Boolean)) = Function(dlr) dlr.Entity.Equals(login)
Dim dealer = Repository(Of Dealer).Create().FindSingle(whereDealer)
Dim whereContract As Expression(Of Func(Of MBI_Contract, Boolean)) = Function(c) c.Dealer.Equals(dealer) AndAlso c.Vehicle.Make.Equals(ford)
Dim fordContractsFromPSAuto = Repository(Of MBI_Contract).Create().FindAll(whereContract).ToList()
どうすればよいでしょうか?それは動作し、それはかなり速いですが、それは私に過度の過労のようです。 FindSingleとFindAllは、Where節の引数としてExpression(Of Func(Of T, Boolean))
をとります。これはラムダ式を書いたときの最初のすごい話ですので、それが悪いと私を許してください。Linq初心者。このLinqクエリをより簡潔に書くことはできますか?
メモリポジトリは汎用クラスで、CreateはDataContextオブジェクトを返すファクトリメソッドです。このアプリケーションはLinqToSqlを使用しています。
ありがとうございました。 乾杯、 〜ck in San Diego
私は式に慣れていないよ、またはのFuncなどのうち、あなたがC#を使用して検討するかもしれませんおそらくラムダの表記法は簡単です。 –
はい私は100%c#、c => c.Something = someValueは非常に使いやすいですが、この特定のプロジェクトはVB.NETで書かれており、C#に変換するのはプロジェクトマネージャの恐竜から撃墜されました。 – Hcabnettek