1
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将Expression(Of Func(Of T, Boolean))
作为Where子句的arg。这是我第一次写Lambda表达式,所以如果看起来不好,请原谅我。Linq新手。我可以写这个Linq查询更简洁吗?
注意Repository是一个通用类,Create是一个返回DataContext对象的工厂方法。此应用程序正在使用LinqToSql。
感谢您的任何建议。 干杯, 〜ck圣地亚哥
我不熟悉Expression或OF Func等,你可能会考虑使用C# ,也许它的lambda表示法更简单。 – 2009-07-16 17:05:17
是的,我同意100%c#,c => c.Something = someValue非常容易使用,但是这个特定的项目是用VB.NET编写的,将它转换为C#是从项目经理的恐龙中被击落的。 – Hcabnettek 2009-07-16 17:20:15