Assume that `arrRowLength`&`arrColLength` have all been properly defined and assigned, and `MyObjectList<MyObject>` has been instantiated and populated with a few objects.

```
class MyObject
{
    public MyObject() { }
    public int rowIndex {get; set;}
    public int colIndex {get; set;}
} 

List<MyObject> MyObjectList = new List<MyObject>();

for (int r = 1; r <= arrRowLength; r++)
{
    for (int c = 1; c <= arrColLength; c++)
    {
         MyObject mo = MyObjectList.Find(item => (item.rowIndex == r && item.colIndex == c));
         if(mo != null)
         {
              //found, do sth...
         }
    }
}

```

Above is my current approach to finding a `MyObject` object from `MyObjectList`, where `rowIndex` and `colIndex` equal to `r` and `c` in for loops. 

However, `Find()` has **O(n)** complexity. The larger the MyObjectList gets, the longer it takes. So I wonder if there's a **better / more efficient way** to find the object. How can I implement this with `.BinarySearch()` method?