我在下面ObservableCollection<string>.我需要进行排序按字母顺序这一点.
private ObservableCollection<string> _animals = new ObservableCollection<string>
{
"Cat", "Dog", "Bear", "Lion", "Mouse",
"Horse", "Rat", "Elephant", "Kangaroo", "Lizard",
"Snake", "Frog", "Fish", "Butterfly", "Human",
"Cow", "Bumble Bee"
};
Run Code Online (Sandbox Code Playgroud)
我试过了_animals.OrderByDescending.但我不知道如何正确使用它.
_animals.OrderByDescending(a => a.<what_is_here_?>);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有以下代码来重新订购ObservableCollection<T>集合:
list = new ObservableCollection<SomeType>( list.OrderBy( c=>c.Ordinal ) );
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但我不喜欢涉及"新"的事实.有没有办法可以在ObservableCollection<T>不创建新集合的情况下更改集合的内部元素顺序?
谢谢,
我有一个ObservableCollection和一个WPF UserControl是Databound.Control是一个图表,显示ObservableCollection中每个BarData类型项的垂直条.
ObservableCollection<BarData>
class BarData
{
public DateTime StartDate {get; set;}
public double MoneySpent {get; set;}
public double TotalMoneySpentTillThisBar {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
现在我想基于StartDate对ObservableCollection进行排序,以便BarData将在集合中按StartDate的顺序递增.然后我可以像这样计算每个BarData中TotalMoneySpentTillThisBar的值 -
var collection = new ObservableCollection<BarData>();
//add few BarData objects to collection
collection.Sort(bar => bar.StartData); // this is ideally the kind of function I was looking for which does not exist
double total = 0.0;
collection.ToList().ForEach(bar => {
bar.TotalMoneySpentTillThisBar = total + bar.MoneySpent;
total = bar.TotalMoneySpentTillThisBar;
}
);
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用ICollectionView对数据进行排序,过滤数据但不会改变实际的集合.我需要对实际集合进行排序,以便我可以为每个项目计算TotalMoneySpentTillThisBar.它的价值取决于集合中的项目顺序.
谢谢.
我正在制作一个可观察的课程.Add方法工作正常.但后来我试图调用Remove()方法我得到这个错误:
"添加的项目不会出现在给定的索引'0'"
但是我将NotifyCollectionChangedAction枚举设置为Remove,如下面的代码所示.
public class ObservableOrderResponseQueue : INotifyCollectionChanged, IEnumerable<OrderResponse>
{
public event NotifyCollectionChangedEventHandler CollectionChanged;
private List<OrderResponse> _list = new List<OrderResponse>();
public void Add(OrderResponse orderResponse)
{
this._list.Add(orderResponse);
if (CollectionChanged != null)
{
CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, orderResponse, 0));
}
}
public void RemoveAt(int index)
{
OrderResponse order = this._list[index];
this._list.RemoveAt(index);
if (CollectionChanged != null)
{
CollectionChanged(this, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, order, index));
}
}
public void Remove(OrderResponse orderResponse)
{
var item = _list.Where(o => o.OrderDetail.TrayCode == orderResponse.OrderDetail.TrayCode).FirstOrDefault();
int index = _list.IndexOf(item);
this._list.RemoveAt(index);
if (CollectionChanged …Run Code Online (Sandbox Code Playgroud) 我需要ObservableCollection按字母顺序对after populatior 进行排序,假设里面有这个模型:
class Nation
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的ObservableCollection:
ObservableCollection<Nation> ob = new ObservableCollection<Nation>();
Run Code Online (Sandbox Code Playgroud)
假设在我里面我有这个订单的三个项目:
我需要按字母顺序排序,所以我尝试:
ob.OrderBy(c => c.Name);
Run Code Online (Sandbox Code Playgroud)
但我没有效果,应该是:
我做错了什么?