【问题标题】:How to convert ToList to ObservableCollection?如何将 ToList 转换为 ObservableCollection?
【发布时间】:2023-03-23 05:32:01
【问题描述】:

大家好。我正在创建一个 Xamarin.Forms 便携式应用程序我只是想问一下如何将此表达式从 List 转换为 ObservableCollection。 看看 'ToList( );'代码。我不知道如何更改它以使其读取可观察的集合。

 CustomerList = _searchedCustomerList.Where(r => r.CUSTOMER_NAME.ToLower().Contains(_keyword.ToLower())).ToList();

我在如何执行此操作时遇到问题,因为我更喜欢使用 ObservableCollection 而不是列表。所以我将 CustomerList 声明为 ObservableCollection。

    public ObservableCollection<Customer> CustomerList
    {
        get
        {
            return _customerList;
        }
        set
        {
            _customerList = value;
            OnPropertyChanged();
        }
    }

有没有办法做到这一点?非常感谢。

【问题讨论】:

  • 只需做一个基本的谷歌搜索,你应该得到答案。
  • @Rohit 是的。我只是想得到一个确切的答案,这就是我在这里问它的原因。还是谢谢。

标签: c# list xamarin xamarin.forms observablecollection


【解决方案1】:

ObservableCollection &lt;T&gt; 具有采用 IEnumerable &lt;T&gt; 的构造函数

例子:

ObservableCollection&lt;Customer&gt; myCollection = new ObservableCollection&lt;Customer&gt;(myList);

【讨论】:

  • 我正在创建一个搜索栏,那么我上面的实际代码应该是什么样的?
  • 初始化一个 Observable 集合会破坏它的目的。使用Remove()Add()
  • 在你的 coude 中可以看起来像 CustomerList = new ObservableCollection&lt;Customer&gt;( _searchedCustomerList.Where(r =&gt; r.CUSTOMER_NAME.ToLower().Contains(_keyword.ToLower())).ToList() );
  • 第一次您可以按照@Raskayu 创建,但在后续调用中而不是调用构造函数时,请使用 Observable 集合的 Remove() 和 Add() 方法。尝试通读 - stackoverflow.com/questions/4279185/…
  • @Rohit 每当我输入你的代码时,我的 SearchBar 似乎都不再工作了。
【解决方案2】:

你可以使用构造函数:

public ObservableCollection( 
    List<T> list 
)

https://msdn.microsoft.com/en-us/en-en/library/ms653202(v=vs.110).aspx

只需创建一个新的 ObservableCollection 并将列表作为参数传递给构造函数。

【讨论】:

    猜你喜欢
    • 2014-11-05
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-03
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多