нужна помощь в преобразовании C # foreach цикла в лямбду - PullRequest
5 голосов
/ 20 апреля 2011

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

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

    return false;
}

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

Ответы [ 4 ]

6 голосов
/ 20 апреля 2011

Попробуйте:

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

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

6 голосов
/ 20 апреля 2011

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

return sList.Any(s => s.L.R == r && s.L.C == c);
0 голосов
/ 20 апреля 2011

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

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

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

0 голосов
/ 20 апреля 2011

Один пример

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