需要帮助将C#foreach循环转换为lambda

时间:2011-04-20 07:44:57

标签: c# linq lambda ienumerable iqueryable

使用带有linq的IQueryable,IEnumerable或lambda表达式可以实现以下循环

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 个答案:

答案 0 :(得分:6)

尝试:

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

Linq中的Any扩展方法适用于IEnumerable序列(例如,可以是List),如果序列中的任何项对于给定谓词返回true,则返回true(在本例中为Lambda函数{{1 }})。

答案 1 :(得分:6)

类似的东西:

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

答案 2 :(得分:0)

因为您应该提供有关您使用的类(s.L.R ??)的更多信息,并且我不知道您真正想要的功能结果,这不是百分之百确定:

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

/ e:好像我有点迟到了,对不起伙计们。没有复制你的。

答案 3 :(得分:-1)

一个例子

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;
}