Skip to content

Commit 87e4c39

Browse files
committed
Make indexer property declaration more readable
1 parent 64114c8 commit 87e4c39

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

Orm/Xtensive.Orm/Sql/Dml/Collections/SqlTableColumnCollection.cs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System;
66
using System.Collections;
77
using System.Collections.Generic;
8+
using System.Runtime.CompilerServices;
89

910
namespace Xtensive.Sql.Dml
1011
{
@@ -50,34 +51,42 @@ public SqlTableColumn this[string name]
5051
return null;
5152
}
5253

53-
if (columnLookup != null) {
54-
return columnLookup.TryGetValue(name, out var column) ? column : null;
55-
}
56-
5754
var count = columnList.Count;
58-
if (count <= 16) {
59-
foreach (var column in columnList) {
60-
if (Comparer.Equals(column.Name, name)) {
61-
return column;
62-
}
63-
}
55+
return count <= 16 ? FindColumnInList(name) : FindColumnInDictionaryLookup(name, count);
56+
}
57+
}
6458

65-
return null;
59+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
60+
private SqlTableColumn FindColumnInList(string name)
61+
{
62+
foreach (var column in columnList) {
63+
if (Comparer.Equals(column.Name, name)) {
64+
return column;
6665
}
66+
}
6767

68-
SqlTableColumn result = null;
69-
columnLookup = new Dictionary<string, SqlTableColumn>(count, Comparer);
70-
for (var index = count - 1; index >= 0; index--) {
71-
var column = columnList[index];
72-
var columnName = column.Name;
73-
columnLookup[columnName] = column;
74-
if (Comparer.Equals(columnName, name)) {
75-
result = column;
76-
}
77-
}
68+
return null;
69+
}
7870

79-
return result;
71+
[MethodImpl(MethodImplOptions.AggressiveInlining)]
72+
private SqlTableColumn FindColumnInDictionaryLookup(string name, int count)
73+
{
74+
if (columnLookup != null) {
75+
return columnLookup.TryGetValue(name, out var column) ? column : null;
8076
}
77+
78+
SqlTableColumn result = null;
79+
columnLookup = new Dictionary<string, SqlTableColumn>(count, Comparer);
80+
for (var index = count - 1; index >= 0; index--) {
81+
var column = columnList[index];
82+
var columnName = column.Name;
83+
columnLookup[columnName] = column;
84+
if (Comparer.Equals(columnName, name)) {
85+
result = column;
86+
}
87+
}
88+
89+
return result;
8190
}
8291

8392
/// <summary>

0 commit comments

Comments
 (0)