нужна помощь в преобразовании цикла C # foreach в lambda

#c# #linq #lambda #ienumerable #iqueryable

#c# #linq #лямбда #ienumerable #iqueryable

Вопрос:

Может ли следующий цикл быть реализован с использованием IQueryable, IEnumerable или лямбда-выражений с linq

 private bool functionName(int r, int c)
{
    foreach (S s in sList)
    {
        if (s.L.R == r amp;amp; s.L.C == c)
        {
            return true;
        }
    }

    return false;
}
  

если да, то как?

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

1. Вопрос не имеет смысла и слишком открытый. Пожалуйста, прочитайте tinyurl.com/so-hints и пересмотрите свой вопрос.

2. Самое интересное, что даже с этими неполными домашними заданиями мы отвечаем, чтобы заработать немного репутации 🙂 Система работает слишком хорошо!

3. @Philippe И ты помогаешь таким людям, как я, которые не слишком знакомы с лямбдами. Я просто не знал о .any

Ответ №1:

Попробуйте:

 private bool functionName(int r, int c)
{
    return sList.Any(s => s.L.R == r amp;amp; s.L.C == c);
}
  

Метод Any extension в Linq применяется к последовательности IEnumerable (которая может быть, например, списком) и возвращает true, если какой-либо из элементов в последовательности возвращает true для данного предиката (в данном случае лямбда-функции s => s.L.R == r amp;amp; s.L.C == c ).

Ответ №2:

что-то вроде:

 return sList.Any(s => s.L.R == r amp;amp; s.L.C == c);
  

Ответ №3:

поскольку вы должны предоставить больше информации о классах (s.L.R ??) вы используете, и я не знаю, чего вы действительно хотите в качестве результата функции, в этом я не уверен на 100 процентов:

 return sList.Any(s => s.L.R == r amp;amp; s.L.C == c);
  

/ e: похоже, я немного опоздал, извините, ребята. Не копировал ваш.

Ответ №4:

Один пример

 private bool functionName(int r,int c)
{
  var ret = from s in sList where s.L.R==ramp;amp;s.L.C==c select s;
  return ret.Count()>0;
}