список содержит идентификатор в linq

#c# #asp.net #linq

#c# #asp.net #linq

Вопрос:

Я пытаюсь найти запрос linq, чтобы я мог записать его в операторе if.

Псевдокод:

idList — это список целых чисел List< int >

 if (IDList.Contains (Object.Id)) Do something
 

но я не могу понять, что нужно.

В none-linq это работает:

   foreach(int id in IDList )
     {
        if (id == Object.Id)
            break;
     }
 

но я хочу, чтобы он был одной строкой, если это возможно.

Я впервые попробовал это:

 IDList.Contains(Object.Id);
 

но это выдает ошибку компиляции

Мне интересно, должен ли это быть один из этих двух?

   IDList.Any(id => id == Object.Id)
 

или

 IDList.Exists(id => id == Object.Id);
 

Я не совсем понимаю, как работают лямбды и прочее, или разница между andy и exists, поэтому я не уверен, что я ошибаюсь?

Комментарии:

1. Что вы хотите сделать, можете ли вы объяснить это логически, потому что это неясно в вопросе

Ответ №1:

Вы можете просто сделать это:

 if (MyList.Any(c => c.Id == MyObject.Id)) { }
 

Предполагая, что MyList это IEnumerable<T> (или что-либо производное от IEnumerable<T> ), где T — это объект, который имеет свойство с именем Id того же типа, что и свойство Id в MyObject экземпляре.

Ответ №2:

  IDList.Any(id => id == Object.Id)
 

Нормально, он вернет вам true , если существует хотя бы один элемент, который удовлетворяет вашему предикату.