#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
, если существует хотя бы один элемент, который удовлетворяет вашему предикату.