XPObjectSpace.FirstOrDefault<ObjectType>(Expression<Func<ObjectType, Boolean>>, Boolean) Method
Searches for the first object that matches the specified lambda expression. The generic parameter determines the object’s type. This method takes uncommitted changes into account.
Namespace: DevExpress.ExpressApp.Xpo
Assembly: DevExpress.ExpressApp.Xpo.v24.1.dll
NuGet Package: DevExpress.ExpressApp.Xpo
Declaration
Parameters
Name | Type | Description |
---|---|---|
criteriaExpression | Expression<Func<ObjectType, Boolean>> | A lambda expression to search for an object. |
inTransaction | Boolean | true if the method takes unsaved changes into account; otherwise, false. |
Type Parameters
Name | Description |
---|---|
ObjectType | The Type of an object to be returned. |
Returns
Type | Description |
---|---|
ObjectType | The first object that matches the specified lambda expression. |
Remarks
The following example uses a Parametrized Action to search for a Person by LastName. After that, this example invokes the default mail client and creates a new draft of a message for that person.
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.Xpo;
using DevExpress.Persistent.Base;
using System.Diagnostics;
// ...
public class SendEmailController : ObjectViewController<ListView, Contact> {
public SendEmailController() {
ParametrizedAction sendEmailAction = new ParametrizedAction(
this, "SendEmail", PredefinedCategory.Edit, typeof(string));
sendEmailAction.Execute += SendEmailAction_Execute;
}
private void SendEmailAction_Execute(object sender, ParametrizedActionExecuteEventArgs e) {
XPObjectSpace objectSpace = (XPObjectSpace)View.ObjectSpace;
string contactParamValue = e.ParameterCurrentValue as string;
if (!string.IsNullOrEmpty(contactParamValue)) {
Contact contact = objectSpace.FirstOrDefault<Contact>(p => p.LastName == contactParamValue, true);
if (!string.IsNullOrEmpty(contact?.Email)) {
Process.Start($"mailto:{contact.Email}");
}
}
}
}