query objects examples consultas c# linq linq-to-objects

c# - objects - LINQ "MaxOrDefault"?



linq to entities (3)

Qué tal si:

int new_id = 0; if (C_Movement.list.Any()) new_id = C_Movement.list.Max(x => x.id) + 1;

Soy nuevo en LINQ. Necesito calcular new_id de la siguiente manera:

public class C_Movement { public int id=-1; public static ObservableCollection<C_Movement> list=new ObservableCollection<C_Movement>(); // ... } int new_id = (C_Movement.list.Count==0) ? 0 : C_Movement.list.Max(x => x.id)+1;

¿Hay una forma LINQ de compactar esa expresión, para que no tenga que usar la estructura "?:"? El problema es que, cuando C_Movement.list no contiene elementos, C_Movement.list.Max (x => x.id) devuelve nulo (y me gustaría que devolviera -1, en su lugar).

Gracias.



int new_id = C_Movement.list.Max(x => (int?)x.id).GetValueOrDefault(-1) + 1;

donde GetValueOrDefault es un method de Nullable<T> .