如何更新可观察的集合组

时间:2017-09-06 09:44:51

标签: linq xamarin xamarin.forms observablecollection grouped-collection-select

我已经实现了如下所示的群组可观察集合。

分组财产

private ObservableCollection<Grouping<String, Request>> _groupedList = null;
public ObservableCollection<Grouping<String, Request>> GroupedList {
    get {
        return _groupedList;
    }
    set {
        _groupedList = value;
        RaisePropertyChanged(() => GroupedList);
    }

}

创建列表

var list = new List<Request>();

var grouped = from Model in list
                         group Model by Model.Done into Group
                         select new Grouping<string, Request>(Group.Key, Group);

GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);

现在我需要更新列表中的一个项目而不重新加载完整列表以提高性能。

我的确尝试过这样,mylist.FirstOrDefault(i => i.Id== mymodel.Id);不适合我。

我需要选择那个特定项目并使用linq或其他东西再次编辑并更新到列表中,但是我在这里停留了群组可观察集合没有有效的细节来执行此操作。任何人都对此有所了解。

最后我得到更新的单项,但我需要在没有

的情况下这样做
GroupedList = new ObservableCollection<Grouping<string, TModel>>(grouped);

因为每次它创建新列表并绑定到我的视图中。虽然再次表现出色。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

我从您的问题中了解到,您希望在不覆盖整个ObservableCollection的情况下推送更新的组。

要做到这一点:

df1 <- readr::read_table(
  "ID    PMT_DATE
100   2015/01/01
100   2015/02/01
100   2015/04/01 
200   2016/01/01
200   2016/02/01"
)
df2 <- readr::read_table(
  "ID    DATE         STATUS    
100   2014/12/31   A
100   2015/03/15   B
200   2015/12/31   A  
200   2016/06/01   C"
)

这将触发“替换”。目标分组的操作。