seleccionar - obtener el ultimo elemento de una lista c#
cómo verificar si el elemento List<T> contiene un elemento con un valor de propiedad particular (6)
public class PricePublicModel
{
public PricePublicModel() { }
public int PriceGroupID { get; set; }
public double Size { get; set; }
public double Size2 { get; set; }
public int[] PrintType { get; set; }
public double[] Price { get; set; }
}
List<PricePublicModel> pricePublicList = new List<PricePublicModel>();
Cómo verificar si el elemento de pricePublicList
contiene cierto valor. Para ser más precisos, quiero verificar si existe pricePublicModel.Size == 200
? Además, si este elemento existe, ¿cómo saber cuál es?
EDITAR Si el diccionario es más adecuado para esto, podría usar Diccionario, pero necesitaría saber cómo :)
En realidad, no necesita LINQ para esto porque List<T>
proporciona un método que hace exactamente lo que usted desea: Find
.
Busca un elemento que coincida con las condiciones definidas por el predicado especificado y devuelve la primera ocurrencia dentro de la
List<T>
.
Código de ejemplo:
PricePublicModel result = pricePublicList.Find(x => x.Size == 200);
Esto es bastante fácil de hacer usando LINQ:
var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
// Element doesn''t exist
}
Puedes usar el existe
if (pricePublicList.Exists(x => x.Size == 200))
{
//code
}
Si tiene una lista y desea saber en qué parte de la lista existe un elemento que coincida con un criterio determinado, puede utilizar el método de instancia de FindIndex
. Como
int index = list.FindIndex(f => f.Bar == 17);
Donde f => f.Bar == 17
es un predicado con los criterios coincidentes.
En tu caso, podrías escribir
int index = pricePublicList.FindIndex(item => item.Size == 200);
if (index >= 0)
{
// element exists, do what you need
}
bool contains = pricePublicList.Any(p => p.Size == 200);
var item = pricePublicList.FirstOrDefault(x => x.Size == 200);
if (item != null) {
// There exists one with size 200 and is stored in item now
}
else {
// There is no PricePublicModel with size 200
}