我有一个简单的linq查询,我需要在一定距离内过滤商店,并按距离计算结果排序,你明白了.
所以,我最后两次调用GetDistance方法.如何优化代码以便每个商店只调用一次?
double distance = 50;
var result = stores.Where<MyStore>( s =>
Helper.GetDistance( lat, lon, s.Lat, s.Lon ) <= distance )
.OrderBy( s => Helper.GetDistance( lat, lon, s.Lat, s.Lon ) )
.ToList();
Run Code Online (Sandbox Code Playgroud) 我正在寻找从一组字符开始查找集合中所有字符串的最快方法.我可以使用排序集合,但是我找不到在.net中执行此操作的便捷方法.基本上我需要在符合条件的集合中找到低和高索引.
列表<T>上的二进制搜索不保证返回的索引是第一个元素的索引,因此需要上下迭代以查找所有匹配的字符串,如果有一个大的列表则不会很快.
还有Linq方法(并行),但我不确定哪种数据结构会提供最好的结果.
列表示例,~10M记录:
aaaaaaaaaaaaaaabb
aaaaaaaaaaaaaaba
aaaaaaaaaaaaabc
...
zzzzzzzzzzzzzxx
zzzzzzzzzzzzzyzzz
zzzzzzzzzzzzzzzzzza
Run Code Online (Sandbox Code Playgroud)
从以下字符开始搜索字符串:skk ...
结果:记录从x到y的索引.
更新:字符串可以具有不同的长度并且是唯一的.