martes, enero 25, 2011

Uso de tuplas de C#

Ejemplo de definición de una función que retorna una tupla:


/// 
/// Retorna la asignación (técnico y mail) asociado a cierto tipo de elemento (equipamiento), o, en su defecto, de la categoría a la que pertenece.
/// 
/// Categoría del elemento
/// Tipo del elemento
/// Tupla Técnico/MailTo
public Tuple<Userstring> GetAssignmentForEquipmentType(string equipmentCategoryID, string equipmentTypeID)
{
    using (AIMModelConnection dc = new AIMModelConnection())
    {
        var query =
            from p in dc.EquipmentAssignments
            where (p.EquipmentCategoryID == equipmentCategoryID && p.EquipmentTypeID == equipmentTypeID) || (p.EquipmentCategoryID == equipmentCategoryID && p.EquipmentTypeID == null)
            orderby p.EquipmentCategoryID, p.EquipmentTypeID descending
            select p;
 
        EquipmentAssignment assignment = query.FirstOrDefault<EquipmentAssignment>();
 
        if (assignment != null)
            return Tuple.Create<Userstring>(assignment.User, assignment.CopyMailTo);
        else
            return null;
    }
}


... Y uso

// Obtener asignación en función de categoría y tipo del elemento afectado.
Tuple<Userstring> assignment = GetAssignmentForEquipmentType(equipmentCategory, equipmentType);

if (assignment != null)
{
    if (assignment.Item1 != null)
        this.txtAssignedTo.Text = assignment.Item1.UserName;

    if (assignment.Item2 != null)
        this.txtMailTo.Text = assignment.Item2;
}

No hay comentarios:

Publicar un comentario