Skip to main content
.NET Framework 4.5.2+

IObjectSpace.FindObject<ObjectType>(CriteriaOperator, Boolean) Method

Searches for the first object that matches the specified criteria. The object’s type is designated by the specified generic type parameter.

Namespace: DevExpress.ExpressApp

Assembly: DevExpress.ExpressApp.v22.2.dll

NuGet Package: DevExpress.ExpressApp


ObjectType FindObject<ObjectType>(
    CriteriaOperator criteria,
    bool inTransaction


Name Type Description
criteria CriteriaOperator

A CriteriaOperator descendant which is the criteria for matching persistent objects.

inTransaction Boolean

true, if the filter takes unsaved changes into account; otherwise, false.

Type Parameters

Name Description

The Type of objects that are retrieved.


Type Description

An object which is the first persistent object which matches the specified criteria.


The following example uses a Parametrized Action to search for a Person by LastName, and then assigns all deferred tasks to that person.

using System.Collections;
using DevExpress.Data.Filtering;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.Persistent.Base;
using DevExpress.Persistent.Base.General;
using DevExpress.Persistent.BaseImpl;
// ...
public class AssignTasksController : ObjectViewController<ListView, MainDemo.Module.BusinessObjects.DemoTask> {
    public AssignTasksController() {
        ParametrizedAction assignTasksAction = new ParametrizedAction(
            this, "AssignTasks", PredefinedCategory.Edit, typeof(string));
        assignTasksAction.Execute += AssignTasksAction_Execute;
    private void AssignTasksAction_Execute(object sender, ParametrizedActionExecuteEventArgs e) {
        IObjectSpace objectSpace = View.ObjectSpace;
        string personParamValue = e.ParameterCurrentValue as string;
        CriteriaOperator personCriteria = CriteriaOperator.Parse("Contains([LastName], ?)", personParamValue);
        Person person = objectSpace.FindObject<Person>(personCriteria, true);
        if(person != null) {
            CriteriaOperator taskCriteria = CriteriaOperator.Parse("[Status] = ?", TaskStatus.Deferred);
            IList tasks = objectSpace.GetObjects(
                typeof(MainDemo.Module.BusinessObjects.DemoTask), taskCriteria);
            foreach(MainDemo.Module.BusinessObjects.DemoTask task in tasks) {
                task.AssignedTo = person;

When implementing the IObjectSpace interface in the BaseObjectSpace class’s descendant, you don’t have to implement the FindObject<ObjectType> method. The BaseObjectSpace class’ FintObject<ObjectType>(CriteriaOperator criteria, Boolean inTransaction) method invokes a public virtual FindObject(Type objectType, CriteriaOperator criteria, Boolean inTransaction) method. So, you should only override the public virtual BaseObjectSpace.FindObject method to implement an object search.

See Also