1

我有这个二维布尔矩阵A

public bool[10][10] A;

是否有一个可以执行以下方法的 Linq?(返回所有索引i,以便对于给定的n,A[i][n]是真的)

public List<int> getIndex (int n)
{
   List<int> resp = new List<int>();
   for (int i = 0; i < 10; i++)
       if (A[i][n])
       {
          resp.Add(i);
       }
   return resp;
}
4

2 回答 2

3
return Enumerable.Range(0, A.Length).Where(x => A[x][n]).ToList();

应该做。否则你可以通过返回一个使整个事情变得懒惰IEnumerable<int>

public IEnumerable<int> getIndex (int n)
{
    return Enumerable.Range(0, A.Length).Where(x => A[x][n]);
}
于 2013-11-04T04:45:36.273 回答
1
public List<int> getIndex (int n)
{
    return A.Select((x, i) => new { x, i }) 
            .Where(x => x.x[n])
            .Select(x => x.i)
            .ToList();
}

应该做你想做的。

于 2013-11-04T04:42:27.560 回答