【问题标题】:need help converting C# foreach loop to lambda需要帮助将 C# foreach 循环转换为 lambda
【发布时间】:2011-04-20 07:44:56
【问题描述】:

下面的循环能否使用带有 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;
}

如果有怎么办?

【问题讨论】:

  • 问题没有意义,而且过于开放。请阅读tinyurl.com/so-hints 并修改您的问题。
  • 有趣的是,即使有这些不完整的家庭作业问题,我们也正在回答以赢得一点点声誉:) 系统运行得太好了!

标签: c# linq lambda ienumerable iqueryable


【解决方案1】:

试试:

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

Linq 中的 Any 扩展方法适用于 IEnumerable 序列(例如,可以是 List),如果序列中的任何项目对给定谓词返回 true(在本例中为 Lambda 函数 s => s.L.R == r && s.L.C == c),则返回 true )。

【讨论】:

    【解决方案2】:

    类似:

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

    【讨论】:

      【解决方案3】:

      由于您应该提供有关您使用的类(s.L.R ??)的更多信息,但我不知道您真正想要什么作为函数的结果,所以这不是 100% 确定的:

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

      /e: 看来我来晚了,抱歉各位。不是复制你的。

      【讨论】:

        【解决方案4】:

        一个例子

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-09
          相关资源
          最近更新 更多