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