我正在创建一项服务,以使用户可以轻松地从IANA 协议注册表中选择协议。
正如您可能想象的那样,在注册表中搜索该术语会http
获得很多点击率。由于amt-soap-http
用户选择的频率比直接选择的频率要低得多http
,所以我决定最好先提取所有以开头的内容http
,然后将其与剩余的结果连接起来。
下面的 lambda 表达式是该思考过程的结果:
var records = this._ianaRegistryService.GetAllLike(term).ToList();
var results = records.Where(r => r.Name.StartsWith(term))
.OrderBy(r => r.Name)
.Concat(records.Where(r => !r.Name.StartsWith(term))
.OrderBy(r => r.Name))
.Take(MaxResultSize);
不幸的是,我觉得我对结果的迭代次数超过了必要的次数。除了过早的优化考虑之外,是否存在比上述更有效的 lambda 表达式组合?