Как проверить, содержит ли элемент List <T> элемент со специфическим значением свойства

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>();

Как проверить, содержит ли элемент pricePublicList определенное значение. Чтобы быть более точным, я хочу проверить, существует ли pricePublicModel.Size == 200? Кроме того, если этот элемент существует, как узнать, какой он есть?

EDIT Если словарь более подходит для этого, тогда я могу использовать словарь, но мне нужно было бы знать, как:)

Ответ 1

Если у вас есть список, и вы хотите знать, где в списке существует элемент, соответствующий заданным критериям, вы можете использовать метод экземпляра FindIndex. Например,

int index = list.FindIndex(f => f.Bar == 17);

Где f => f.Bar == 17 - предикат с критериями соответствия.

В вашем случае вы можете написать

int index = pricePublicList.FindIndex(item => item.Size == 200);
if (index >= 0) 
{
    // element exists, do what you need
}

Ответ 2

bool contains = pricePublicList.Any(p => p.Size == 200);

Ответ 3

Вы можете использовать существующий

if (pricePublicList.Exists(x => x.Size == 200))
{
   //code
}

Ответ 4

Это довольно легко сделать с помощью LINQ:

var match = pricePublicList.FirstOrDefault(p => p.Size == 200);
if (match == null)
{
    // Element doesn't exist
}

Ответ 5

На самом деле вам не нужен LINQ, потому что List<T> предоставляет метод, который делает именно то, что вы хотите: Find.

Ищет элемент, который соответствует условиям, определенным указанным предикатом, и возвращает первое вхождение во всем List<T>.

Пример кода:

PricePublicModel result = pricePublicList.Find(x => x.Size == 200);

Ответ 6

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
}