我正在开发一个Windows Phone 8应用程序,我使用便携式类库 . 这些项目似乎没有linq支持 .
是否有一种好的/推荐的方法来根据属性值搜索列表中的项目?
如果我做对了,我就不能用这样的东西: list.Find(i => i.ID == someValue);
list.Find(i => i.ID == someValue);
编辑:我目前正在使用 foreach ,但想知道是否有其他解决方案 .
foreach
PCL设置包括:.NET 4.5,Silverlight 4,Windows Phone 7.5和Windows应用商店
因为您不需要Xbox,所以您可以在PCL中使用LINQ . Blog post解释使用PCL时的限制 .
LINQ代码:
list.FirstOrDefault(i=>i.ID==someValue);
你可以使用list.FirstOrDefault(i => i.ID == someValue);
如果列表按搜索属性排序,那么旧的二进制搜索应该可以解决问题 . 然后你会得到O(log(n))计算复杂度,而不是O(n)和 foreach ,尽管排序和某些列表大小的开销可能会使所有这些技巧都可以忽略不计 .
3 回答
因为您不需要Xbox,所以您可以在PCL中使用LINQ . Blog post解释使用PCL时的限制 .
LINQ代码:
你可以使用list.FirstOrDefault(i => i.ID == someValue);
如果列表按搜索属性排序,那么旧的二进制搜索应该可以解决问题 . 然后你会得到O(log(n))计算复杂度,而不是O(n)和
foreach
,尽管排序和某些列表大小的开销可能会使所有这些技巧都可以忽略不计 .