Я не уверен, почему вы использовали бы здесь матрицу, если вы просто просматриваете один столбец.
Приведенный ниже код проверит через столбец (я могу сделать его динамическим диапазоном, если вы того пожелаете) и остановится на первой ячейке со значением «Нет требований» - он затем выведет адрес ячейки со значением и Нет "и выходит из цикла.
Sub RandomCol()
For Each cell In Worksheets("Calculations").Range("A1:A50")
If cell.Value = "Yes" Or cell.Value = "No Requirement" Then
ElseIf cell.Value = "No" Then
Range("H33").Value = (cell.Address + " " + "No")
Exit For
End If
Next cell
End Sub
Интересно..., что делает GetOriginalEntityState
возвратиться для неприложенного объекта? Даже если это выдаст исключение, то это, вероятно, будет быстрее, чем обновление...
(обновление) - тест показывает, что это возвращает пустой указатель:
Customer cust = new Customer();
Customer orig = ctx.Customers.GetOriginalEntityState(cust);
Assert.IsNull(orig);
cust = new Customer();
ctx.Customers.Attach(cust);
orig = ctx.Customers.GetOriginalEntityState(cust);
Assert.IsNotNull(orig);
Assert.AreNotSame(cust,orig);
Поэтому, возможно, используйте GetOriginalEntityState
и проверьте на возвращенное значение пустого указателя...
Я думаю, что лучшим решением будет следующее:
ObjectStateEntry stateEntry = null;
if (context.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry))
{
//you know you are attached!
}