我有兴趣了解.NET中泛型集合的底层实现细节.我想到的是诸如如何存储集合,CLR如何访问集合的每个成员等细节.
对于类似于传统数据结构的集合,例如LinkedList和Dictionary,我想我已经了解了下面发生了什么.但是,我不确定像List这样的集合(如何设置它可以索引和扩展?)和SortedList,所以任何关于我可以查看以了解更多关于它们的信息都会非常感激.
我有一个名为"CodeLookupAccessDataContext"的DataContext对象,它是通过Visual Studio LINQ to SQL类向导生成的.我扩展了这个对象的功能,以便它公开一些方法来返回LINQ to SQL查询的结果.以下是我定义的方法:
public List<CompositeSIDMap> lookupCompositeSIDMap(int regionId, int marketId)
{
var sidGroupId = CompositeSIDGroupMaps.Where(x => x.RegionID.Equals(regionId) && x.MarketID.Equals(marketId))
.Select(x => x.CompositeSIDGroup);
IEnumerator<int> sidGroupIdEnum = sidGroupId.GetEnumerator();
if (sidGroupIdEnum.MoveNext())
return lookupCodeInfo<CompositeSIDMap, CompositeSIDMap>(x => x.CompositeSIDGroup.Equals(sidGroupIdEnum.Current), x => x);
else
return null;
}
private List<TResult> lookupCodeInfo<T, TResult>(Func<T, bool> compLambda, Func<T, TResult> selectLambda)
where T : class
{
System.Data.Linq.Table<T> dataTable = this.GetTable<T>();
var codeQueryResult = dataTable.Where(compLambda)
.Select(selectLambda);
List<TResult> codeList = new List<TResult>();
foreach (TResult row in codeQueryResult)
codeList.Add(row);
return codeList;
} …Run Code Online (Sandbox Code Playgroud)