我之前没有和LINQ合作,但我知道它有多高效 我创建了一个带有对象的List,您可以在下面看到:
Set-AzureStorageCORSRule -ServiceType Blob -CorsRules $CorsRules
-Context $ctx
这将包含public sealed class Item
{
public long Start { private set; get; }
public long End { private set; get; }
public Item(string start, string end)
{
this.Start = Convert.ToInt64(start);
this.End = Convert.ToInt64(end);
}
}
个包含约200k项的圆
现在,我想在属性'开始'之间选择最佳单项。并且'结束'。
DataSet
从其他工具中,我获得了价值:this.ItemList.Add(new Item(100000, 100002));
this.ItemList.Add(new Item(100003, 100006));
this.ItemList.Add(new Item(100007, 100012));
this.ItemList.Add(new Item(100013, 100026));
this.ItemList.Add(new Item(100027, 100065));
如何使用LINQ获取对象100009
?有没有人有任何建议?
答案 0 :(得分:4)
听起来像一个简单的Where
查询就足够了:
long value = 100009;
var found = ItemList.Where(item => item.Start <= value && item.End >= value);
这将产生包含所有匹配项的IEnumerable<Item>
。您可以使用.First()
/ .FirstOrDefault()
获取第一个匹配项,或继续过滤结果,直到获得所需的结果。
请注意,如果您确实有200k条目,则List可能不是要搜索的最有效的数据结构(您具有O(n)复杂性)。如果性能问题,您可能需要考虑using a SortedList
and a binary search algorithm instead。