如何过滤ObjectDataSource返回的对象?

时间:2012-04-16 04:12:29

标签: c# asp.net datasource objectdatasource

我有一个DropDownList,它会从ObjectDataSource加载返回ArrayList<MyObject>的数据。我想知道,如何过滤返回的ArrayList

例如,MyObject类的一个属性是'IsCompulsory'。 ODS加载ArrayList<MyObject>后,在将数据绑定到DropDownList之前,我想删除IsCompulsory = false所有的对象。

我该怎么做?我认为ObjectDataSource的{​​{1}}事件是一个好地方,但我如何过滤这些值&amp;我该怎么回事呢?

2 个答案:

答案 0 :(得分:1)

我认为OnSelected方法可能为时已晚,无法过滤数据。另一种方法可能是在ObjectDataSource上使用Parameters,以便仅查询您需要的数据。这实际上可以提高性能。您可以以声明方式或编程方式设置它们。

以下是一个示例(请参阅下面的链接以获取完整示例):

<asp:objectdatasource
  ID="ObjectDataSource1"
  runat="server"
  SelectMethod="GetMyObject"
  TypeName="MyNamespace.MyClass" >
  <SelectParameters>
    <asp:ControlParameter ControlID="CheckBox1" DefaultValue="false" Name="myCondition" />
  </SelectParameters>
</asp:objectdatasource>

完整示例:

http://msdn.microsoft.com/en-us/library/57hkzhy5.aspx

答案 1 :(得分:-1)

您可以使用LINQ来执行此操作,如下所示:

 List<MyObject> filteredObjects = (from MyObject obj in sourceObjects
                                          where obj.IsCompulsory == false
                                          select obj).ToList<MyObject>();

假设您在sourceObjects

中有列表(要过滤)

P.S。不要忘记为上面添加using System.Linq;以便正常工作。

编辑:您现在需要filteredObjects DataSource作为DropDownList