【问题标题】:c# portable class library: find item in list by propertyc#可移植类库:按属性在列表中查找项目
【发布时间】:2013-07-03 17:43:55
【问题描述】:

我正在开发一个使用可移植类库的 Windows Phone 8 应用程序。 这类项目似乎没有 linq 支持。

有没有好的/推荐的方法来根据属性值在列表中搜索项目?

如果我做对了,我不能使用类似的东西:list.Find(i => i.ID == someValue);

编辑:我目前正在使用foreach,但想知道是否有其他解决方案。

PCL 设置为: .NET 4.5、Silverlight 4、Windows Phone 7.5 和 Windows 应用商店

【问题讨论】:

  • foreach?无论如何,这都是 linq 所做的一切
  • 我目前正在使用它(foreach),只是好奇是否存在其他解决方案。应该将其添加到问题中...
  • 为什么没有对 PCL 的 LINQ 支持?在这方面你有没有参考 MSDN?
  • 在 PCL 中缺少 LINQ 支持:此链接显示 List.Find 方法在 PCL 中受支持 msdn.microsoft.com/en-us/library/x0b5b5bc.aspx
  • LINQ 在 PCL 中可用。我现在正在使用它。

标签: c# windows-phone-8 windows-store-apps portable-class-library


【解决方案1】:

因为您不需要 Xbox,所以您可以在 PCL 中使用 LINQ。 Blog post 解释使用 PCL 时的限制。

LINQ 代码:

list.FirstOrDefault(i=>i.ID==someValue);

【讨论】:

    【解决方案2】:

    您可以使用 list.FirstOrDefault(i=>i.ID==someValue);

    【讨论】:

    • System.Linq 命名空间最终在 PCL 中可用。我刚刚将它添加到我的一个中!
    【解决方案3】:

    如果列表按搜索属性排序,好的旧二分搜索应该可以解决问题。然后你会有 O(log(n)) 的计算复杂度,而不是 O(n) 的 foreach,尽管排序和某些列表大小的开销可以使所有这些技巧都可以忽略不计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2011-04-29
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多