【发布时间】:2014-03-04 02:50:08
【问题描述】:
我需要使用 LINQ 构建一个动态查询来过滤 IEnumerable 的元素 - 它用作 Repeater 控件上的 SelectMethod - 以显示来自我的实体模型的正确数据。我真的不知道从哪里开始。
vb 或 c# 都可以,我更喜欢 LINQ 的基于方法的语法,而不是查询表达式语法,但无论如何都能完成工作......
HTML
<asp:Repeater ID="pList" runat="server" ItemType="rsDataAccess.Product" SelectMethod="GetProducts">
<ItemTemplate>
...
</ItemTemplate>
</asp:Repeater>
我想要完成的坏例子
Public Function GetProducts() As IEnumerable(Of Product)
Dim products As Product =
repo.Product.Where(Function(r) r.Status = "Open")
Dim query As String = ""
If option1 = True Then
query += "Where(function(r) r.Price > 100)"
End If
If option2 = True Then
query += "Where(function(r) r.Zip = 63039 "
End If
products += query
Return products
End Function
objectContext.CreateQuery() 是唯一一个(据我所知)可以提供我需要的功能的功能,但我的猜测是有更好的方法。所以,请告诉我更好的方法是什么。
我知道我可以在 if 语句中返回 IEnumerable,但这不是我想要的。
If option1 = True Then
Return repo.Products.Where(Function(r) r.Price > 100)
End If
If option2 = True Then
Return repo.Products.Where(Function(r) r.Zip = 63039)
End If
【问题讨论】:
-
我知道您正在寻找一种在 linq 中进行动态操作的方法吗?
-
@PandaZhang 是的,没错
标签: asp.net vb.net entity-framework model-binding