.net - How To Sort A Observablecollection(of String)
May 21, 2012
All I need is a simple way to sort the strings in the collection. I can't find anything online. Everybody is using lamda expressions which I don't think works for just a string collection?
Public Property FilterCollection As New ObservableCollection(Of String)
From d In FilterCollection Order By (Function(d) d)()
I have a WPF app which binds a System.Collections.ObjectModel.ObservableCollection to a listbox. This ObservableCollection contains instances of my own class (named DataContractsUserObject) and at runtime when I add an object to this collection it automatically appears in the listbox because of the binding. The problem is that it always appears at the bottom of the list and I would like it to appear alphabetically sorted as the existing items in the listbox are.So I tried to sort the collection by doing this after I add an item to it:[code]but of course that is not actually sorting the original collection is it, its just sorting a new instance that is in a Generic.List format. Whilst I probably could just do that and then set that new list instance back as the source of the listbox binding, that will cause all of the items to be reloaded (and when each item in the listbox is loaded it animates in, so it would look stupid having all items animate in again just because one has been added).
The ObservableCollection class itself does not have a Sort method and although I know how to implement my own comparison class (using IComparer) I dont know how to make this work on an ObservableCollection without doign ToList or ToArray etc.[code]Just found this that looks like it might be of some use url...
Sub Sort() ReDim RollsCC(NumOfPlayers - 1) For N As Integer = 0 To (NumOfPlayers - 1)[code]....
Here I am creating a temp single dimensional array, merging my 2d array into it, and then attempting to sort it by Rolls(N,1), which is a integer 1-6, Everything seems to be working right with the exception of this.
RollsCC.Sort(RollsCC, 0, 1)
How would one specify a numeral sort based on the first character in the string? im aware that I am switching Rolls(n,1) and Rolls(n,0) information during the sort.
I have a List(of String()). I have written a custom comparer (implements IComparer(of string)) to do an alphanumeric sort.Is there a way to sort the List using a given index to determine which position in the String() to sort by? In other words one time I might sort by Index = 0 and another time by Index = 3. The length of all String() in the list is the same.For reference this question is similar to Sort List<String[]> except I am using VB.net and that question is hardwired to Index=0.
EDIT from OP's comments:I started simple with the non custom comparer but I am getting an error: expression does not produce a value. Not sure what I am doing wrong.Here is the code:
Public Shared Function SortListOfStringArray(ByVal ListOfStringArray As List(Of String()), ByVal SortByIndex As Integer) As List(Of String()) Return ListOfStringArray.Sort(Function(x, y) x(SortByIndex).CompareTo(y(SortByIndex))) End Function
I'm coding my project that need to make string become number based from alphabet position example : "work" become "4231" because in "work" string "k" is the small alphabet than the others and "w" is the biggest now I wanna make 2 textbox, the first textbox is a place I put "work" then after I press a button the second textbox show a result "4231" is it possible to do ?
I already try to use array.sort but I don't know how to give a position after I sort it or maybe there is other way to sort it ?
I have a simple routine to find the next object based on a name property in an un-ordered collection of objects. I go through the collection and collect all the names in a List(of String) adding any names that are > my current name, which should give a list of everything that comes after the current key. I then sort the list using the default .Sort() method on the List(of String) and take the first item in the list, which should be my next item. I do the reverse to find the previous item, add all items < my current name, sort, and take the last item in the list.
However, this method skips over some items. For example I have items named 1210, 1210-ADA, and 1210_ADA_DB. Using this method, getting the next item skips the middle item 1210-ADA and finds 1210_ADA_DB, but finding the previous item seems to work.
I am using the following code to load a file into my program, everything works fine. When I open a new file everything works fine unless I have this line inserted: Me.BindingSource4.Sort= "NewDateSold Desc"
That line works unless I open a new file while in the same instance of the program running. The I receive the following error: Sort string contains a property that is not in the IBindingList.
File Open Code Private Sub OpenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenToolStripMenuItem.Click OpenFileDialog1.InitialDirectory = "c:" OpenFileDialog1.Filter = "Text Files (*.txt)|*.txt|CSV Files (*.csv)|*.csv" [Code] .....
I am really confused since everything works properly if I comment out the Me.BindingSource4.Sort = "NewDateSold Desc"
I have a dataGridView and a textbox on a form. I want to be able to search through the dataGridView and sort it compared to the string in the text box. Ex: I type "acv" in the text box and all strings containing "acv" are sorted to the top. I'm accomplishing this with a bunch of gymnastics involving datatable.select and some clearing and filling but it's ugly and slow.
I am new to VB.Net 2008. I have a tricky task to resolve, it is regarding extracting characters (values) from a long string, the extracted values from the text shall be summed up and sorted by keywords, reformatted and saved into a CSV file.
How would one code a button so upon cliking it items in listbox would sort either ascending or descending (depends on the button clicked). It mustn't be done with built-in Sort() but with a for loop for example. Tried to pseudo-code the solution to the problem, went as far as "store each listbox item in an array with a for loop".
I have a line like this 18N694 P321 117461, 50374 50MIL; XTAL_X1 P253 116711, 66524 39MIL; HR_ICH_HUB_CLK66_R P1567 109761, 68424 39MIL; P64H2_CLK66_R P2177 110161, 68424 39MIL; CPLD_NET2 P1151 4711, 90424 75MIL; V3_3_MGMT_PWR_RST# P3482 4711, 90024 100MIL;
From the above line I have to look the last word MIL. Then I need to arrange the line in ascending orders according to 30MIL,50MIL, 75MIL and 100MIL. Can I use IComparer? Because here I dont know how I can reach the word MIL and sort.
I'm doing an experiment on WPF and MVVM, and while coding the ViewModel on Vb.net I noticed this red wavy lines under my ObservableCollection(of T)s T_T
Anyway, the application is in WPF & VB.Net, under the .Net Framework 3.5 (I checked) and I have an 'Imports System.Collections.ObjectModel' on top of my class. Intellisense shows the other classes on System.Collections.ObjectModel except ObservableCollection.
Here's a screenshot.
So, why is ObservableCollection(of T) missing and how do I make it appear?
I'm trying out MVVM in VB.Net for a while now and started out with some of my entities using List(of T)s, which I xml serialized to disk. Now, I updated the classes used by the Lists to implement INotifyPropertyChanged so I also changed the List(of T)s to ObservableCollection(of T)s.After which, the XML serializer stopped working :'( A colleague told me that ObservableCollections, unlike generic Lists, are not serializable.If so then how can I make them Serializable?
This will probably be a basic questions for the LINQ & architecture experts however I am failing to understand a problem i've encounted when trying to update a 'Static ObservableCollection.
Me.Grid1.ItemsSource = ContactList Me.Grid2.ItemsSource = From s In ContactList Where s.ContactTypes.Any(Function(t) t.ContactTypeName = "Christmas List")
If I add a new Contact with the ContactType "Christmas List" to the ContactList ObservableCollection, Grid1 reflects the additional Contact however Grid2 does not reflect the change unless I rebind.
Anyway to Reflect the change in Grid2 to show the new Contact with the queried ContactType
I'm trying to get bind a textbox text property to an observable collection, and report changes back to the collection. The ContactLog property gets set from the calling page.[code]....
I have a custom item class (basically two string values with associated properties), as below:
Public Class itmDataDetails Private _strDataName As String Private _strDataValue As String Public Property strDataName() As String
[Code]...
Naturally, this doesn't work as x cannot be added to the ObservableCollection(Of itmDataDetails). Any suggestions on how to accomplish this? I don't know LINQ that well, so I wouldn't be surprised to discover I'm doing it wrong.
How can I implement both of these ObservableCollections in my xaml? I want to have a listview with all my students, and another listview with all my teachers.For now I just made an example student and teacher object. Am I going about this the wrong way. Eventually I will pulling from a datatable, not sure how I would implement it to the ObservableCollection though.
Public Class PersonalViewModel Public Sub New() Dim obcollection1 As New ObservableCollection(Of Student)
I have a WPF application which has a listbox bound to an ObservableCollection which retrieves it's data from a Database. I am attempting to have the ListBox data refreshed every minute through the use of a DispatcherTimer.
Dim dispatcherTimer As DispatcherTimer = New System.Windows.Threading.DispatcherTimer AddHandler dispatcherTimer.Tick, AddressOf getRoomMeetingDetails dispatcherTimer.Interval = New TimeSpan(0, 2, 0) dispatcherTimer.Start()