gpt4 book ai didi

c# - IList 到 ObservableCollection

转载 作者:可可西里 更新时间:2023-11-01 03:03:21 25 4
gpt4 key购买 nike

我在当前返回 IList 的 Silverlight 应用程序中有一个方法,我想找到最干净的方法将其转换为 ObservableCollection,因此:

public IList<SomeType> GetIlist()
{
//Process some stuff and return an IList<SomeType>;
}

public void ConsumeIlist()
{
//SomeCollection is defined in the class as an ObservableCollection

//Option 1
//Doesn't work - SomeCollection is NULL
SomeCollection = GetIlist() as ObservableCollection

//Option 2
//Works, but feels less clean than a variation of the above
IList<SomeType> myList = GetIlist
foreach (SomeType currentItem in myList)
{
SomeCollection.Add(currentEntry);
}
}

ObservableCollection 没有将 IList 或 IEnumerable 作为参数的构造函数,因此我无法简单地新建一个。是否有一个看起来更像我所缺少的选项 1 的替代方案,或者我在这里太挑剔了,而选项 2 确实是一个合理的选择。

此外,如果选项 2 是唯一真正的选项,是否有理由在 IEnurerable 上使用 IList,如果我真正要做的只是迭代返回值并将其添加到其他类型收藏?

提前致谢

最佳答案

您可以编写一个快速但肮脏的扩展方法以使其变得简单

public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> enumerable) {
var col = new ObservableCollection<T>();
foreach ( var cur in enumerable ) {
col.Add(cur);
}
return col;
}

现在你可以写了

return GetIlist().ToObservableCollection();

关于c# - IList<T> 到 ObservableCollection<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com