IEnumerable Extensions Of Sortedlist?
Aug 8, 2011when you use the object browser to see the features of a sortedlist elementat is not shown , but because a sorted list inherets features of ienumerable it works, cant that be corrected
View 1 Replieswhen you use the object browser to see the features of a sortedlist elementat is not shown , but because a sorted list inherets features of ienumerable it works, cant that be corrected
View 1 Replies1) SortedLIst has a GetKey property: you ask for the nth key in the sorted list of keys and you get it. SortedList(of TKey, TValue) does not have this kind of feature. Why not?
2) SortedList stores values as "object." Is this a less memory-effective method to store values of Double than SortedList(of TKey, TValue)?
I have an object called Result<T> that has a constructor which accepts an argument of IEnumerable<T>. I'd like to be able to pass in a datatable if possible.
I tried datatable.AsEnumerable(), but where I bind to the data it was complaining that 'MyProperty' is not a field or property on type 'DataRow' - which makes sense since 'MyProperty' isn't a property on 'DataRow', but it was a column in my datatable.Is there a way to convert a datatable to something that I can pass into the Result object and still have it bind to, say, a gridview?
I tried using the linq Zip method on IEnumerable but it does not work for more than 2 arrays.Here is an example in Python of what I am trying to do(I got p - nested IEnumerable - and need q - another nested IEnumerable):
>>> l=['a','b','c']
>>> m=[1,2,3]
>>> n=['x','y','z'][code].......
How to get the key of a sorted list from the corresponding value directly without using For Each loop. For instance in the following code snippet, I want to get the key value (and not the index) of "Canada", how?
Code Snippet:
SortedList
Imports System
Imports System.Collections
[Code]...
Here's a list example
SortedList name = test
"nothing" | 0
"something" | 1
How can I go about running a for each loop or something to add each first column in test to, say a listbox.
Listbox should just have listed.
nothing
something
I tried
For Each i In text.Values
lbTest.Items.Add(i)
Next
But that produces:
0
1
I have a the need for key value pair that I wish to sort so I decided to use a SortedList instead of a HashTable.I am adding the data in the order below to my SortedList which is the order I need it in
Key | Value
--------------------------------
1 "700-800" | List(Of Object)
2 "900-1000" | List(Of Object)
[code]....
The key is a string and the value is a List of objects. The key is representing a time slot that has been concatenated from two integer values and delimited by "-". "700" as a string was 0700 initially an integer.e.g.
Dim key As String = slotTimeStart.ToString() & "-" & slotTimeEnd.ToString()
But once these key value pairs are added to the SortedList they appear in the order
3 "1100-1200" | List(Of Object)
4 "1700-1800" | List(Of Object)
[code]....
Unfortunately I recieve the times slots as two integer values which cannot be changed.Is there any way to force a sort on a SortedList? or is this problem because of the way I am storing my key? Is there a better way to store it?
i can get a value, a key out of a list by using index ,key or value parameters but a kvp as object ?nattelip
View 13 Repliesi have a sortedlist variable called :
Cart
which contains two Cartitem object and within these two objects is a further object called Product.i wish to amend the Product object Property named Quantity
["860"] = {Cartitem}
["861"] = {Cartitem}
When i attempt to update the Cartitem object using the key value it overwrites Cartitem to Product.
Present Update
Cart(key.ToString) = product
results in
["860"] = {Product}
How may i update a Product property without replacing Cartitem object to Product?
I'm making a sortedlist I can read a file into my program but do someone now how to show the output? Its made with classes and they will work. How to show the output of the file because I can't find.
This is the Form1
Public Class Form1
Public lijst As New SortedList(Of String, bankrekening)
'Dim spaar As spaarrekening
'Dim zicht As zichtrekening
Private Sub OverschrijvenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OverschrijvenToolStripMenuItem.Click
FrmOverschrijven.show()
[Code] .....
I have a txt file I' m trying to read a line and add it to the array list, I' m identying the begining of the new line with B and N charecters in the 11 and 12 th positions respectively. Now the problem is that few keys are getting dropped the structure of the file is
10000BN test 1 test2
10000S0000 test3 test 4// these are getting dropped because they are on a new line
10000S 0000 test5
so how do I add these two lines to the record
[Code]....
I have a SortedList
Protected _Items As New Generic.SortedList(Of String, _Control)
I am adding items into this SortedList
_Items.Add(_key, _Control)
[code].....
The code below shows me (I think) that the "for each" loop is about 10% faster than the "i to n" loop, but the "for each" loop creates 567k in new memory? Is this right? Which way is generally most efficient with regards to speed and memory usage? If you want to run this code in VB just add a button and 2 labels to a form.
[Code]...
I see a couple of previously answered questions about adding an item to an IEnumerable in C#, but I'm stuck when trying to implement the proposed solution in VB.NET.
Option Strict On
Dim customers as IEnumerable(Of Customer)
' Return customers from a LINQ query (not shown)
customers = customers.Concat(New Customer with {.Name = "John Smith"})
The above code gives the error:
Option Strict On disallows implicit conversions from Customer to IEnumerable(Of Customer)
is there a way to retrieve type T from IEnumerable<T> through reflection?
e.g.
i have a variable IEnumerable<Child> info; i want to retrieve Child's type through reflection
IEnumerable interface provides a instance method GetEnumerator that returns IEnumerator type opject .That's okey .But its very hezy to me that how IEnumerable objects are able to work with For Each loop ?When using For Each GetEnumerator method is not called directly from my code .Then from where and how GetEnumerator is called ?Basically my question is that when a class implements IEnumerabel interface then how a distinct behaviour is attached to that class?How it is used with For Each without calling GetEnumerator ?Here is the sample code that i am using :
Public Class Person
Public firstName As String
Public lastName As String
Public Sub New(ByVal firstName As String, ByVal lastName As String)
[code]....
What I need is to be able to put in a SortedList a combination of two fields that are non-unique, but the pair is (like database composite keys).More precisly, i have my list, and i want to be able to do this with it
Dim myList = New Generic.SortedList(Of String, String)
myList.add("aaa","aaa")
myList.add("aaa","bbb")
[code].....
i'm using Enumerable.Except to check if a DataTable in memory is in sync with the table in database.
The background is: this DataTable and other frequently used tables are stored in the Cache of a WebApplication. But meanwhile i'm convinced that this is not a good approach because it's a source for nasty errors that are difficult to reproduce/debug.
Therefore i've created a function that checks if database and memory are in sync, otherwise an error-log will be created. This works perfectly. If there is a row in memory that is not in database, this row will be shown below "Difference in database", the same applies in reverse. But if rows exist in both datasources(the PK idRMA) and some values differ, the log will contain this row in two versions(below "Difference in database" and "Difference in database"). It is not easy to see the differences on the first sight.
Q: Is it possible to select only the properties that caused Except to think that first sequence is not in second?
This is the the complete function(the first lines are relevant):
Public Shared Sub CheckRmaMemoryInSyncWithDB()
Dim inSyncText As String
Dim color As Drawing.Color
[Code]......
I'm trying to use the page control's collection with LINQ. Whereas this works:
dim l = Me.Controls.OfType(Of TextBox).AsQueryable()
the following return an ArgumentExceptionError:
dim l = Me.Controls.AsQueryable()
I used this but did not work :
Dim IENUM As IEnumerable = dat.getDanhSachDongSP
Dim bid as New BindingSource
bid.DataSource = IENUM
Dim dt2 As DataTable
dt2 = bid.DataSource
It show error "cant convert from IEnumberable to datatable"
While learning to use LINQ in VB.NET, I came across the following:Dim x As IEnumerable = (some LINQ query)
If you can't instantiate an interface, but only a concrete implementation of it, why is this allowed? Is there some difference between doing Dim x as (Type) and Dim x as New (Type)?
I have an IEnumerable(Of System.Data.DataRowView) and would like to set it to be the datasource of a datagridview - however when I try I get no results my IEnumerable variable in the eg below is called xIEnum
DataGridView1.DataSource = xIEnum
However when I go
DataGridView1.DataSource = xIEnum.ToList
it works.... However I want the data to automatically update when I change the underlying datasource that the IEnum is mapped to?
I have the follow Linq query that is in a web application that was converted from .NET 1.1 to 3.5:
dim objListOfFilteredDataRows = from datarows as datarow in objDataSet.tables(0).rows _
where datarows("SomeColumn") = SomeValue
I have the exact same query in an application that was created using .NET 3.5 and the query returns an IEnumerable. However the query in the converted application is returning:
{Name = "WhereEnumerableIterator`1" FullName = "System.Linq.Enumerable+WhereEnumerableIterator`1[[System.Data.DataRow, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}
**Edit: When I highlight the expression, the intellisense says that it doesn't know the type of objListOfFilteredDataRows and assumes its a type of "Object". Why is the type not infered in the converted 1.1 application but is infered in the "native" 3.5?**
What am I missing here? How do I convert the "WhereEnumeratorIterator`1 to an IEnumerable?
I've searched everywhere for some example code for this, but I can't figure out how to bind data returned from a function that looks like this to a gridview or dataset.
Public Function GetCompanyList() As IEnumerable(Of BusinessUser)
Return (From companyList In CorporateLists
Select companyList.User).Distinct()
[code].....
how to insert records with dapper-dot-net. However, the answers, while informative, didn't seem to point me in the right direction. Here is the situation: moving data from SqlServer to MySql. Reading the records into an IEnumerable<WTUser> is easy, but I am just not getting something on the insert. First, the 'moving records code':
// moving data
Dim session As New Session(DataProvider.MSSql, "server", _
"database")
Dim resources As List(Of WTUser) = session.QueryReader(Of WTUser)("select * from tbl_resource")
[code]....
Suppose I have an IEnumerable such as a List(TValue) and I want to keep track of whether this list is being accessed (to prevent issues with, say, adding to the list while it is being iterated over on a different thread); I can always write code such as the following:
Dim List1 As New List(Of Integer)
Dim IteratingList1 As Boolean = False
' ... some code ... '
[Code]....
(I realize this code is very arbitrary, but it illustrates what I'm talking about.)
My question is whether there's a better/cleaner way to perform this check than by manually updating and accessing a Boolean, as above. I feel like there must be, but, to my knowledge, there isn't any IEnumerable class with a built-in "I am being iterated over" method or property. And writing a new class that implements IEnumerable and contains such a property seems like overkill to me.
In VB.Net you can easily get the text value of the first child element of an XElement like so:Dim sChildValue = xeParent.<MyChild>.Value()Of course that syntax is not supported in C#, but it produces the same IEnumerable(Of XElement) result as the Elements() method. So we can rewrite the above like so:
Dim sChildValue = xeParent.Elements("MyChild").Value()This Value() extension method is handy because often you are working with small XML documents and you just want the first node that matches. (One thing that annoys me about this method is that it seems to return Nothing/null if the IEnumerable list is empty due to the specified element not being found. To work around this I have created my own ValueOrBlank() method that returns an empty string in that situation instead.)
My problem is that I can't do the same thing in C#:var sChildValue = xeParent.Elements("MyChild").Value(); // won't compile, can't find Value() method
I checked my references/imports and they match the VB.Net project where the same call works. Fortunately I am able to use my custom ValueOrBlank() extension method to accomplish the same thing. But I'm curious as to what's missing in my C# project. I tried right-clicking on the Value() method call in Visual Studio and clicking "Go To Definition" to see if the Object Browser could tell me where the extension method is kept, but it just shows the System.String class. Does that mean this is one of those sneaky VB.Net-only features that the compiler itself supports, like the XML Axis < MyChild > syntax?
The following line is giving me an InvalidCastException when trying to convert to IEnumerable type, even though I have implemented IEnumerable interface. Return New CountryInfo(CountryCodes(i), CountryNames(i)) (also in bold below)
Imports System
Imports Gaia.WebWidgets.HtmlFormatting
Imports System.Collections.Generic
Imports System.Globalization
[code]....
If I have a List(Of x) and a List(Of y) is it possible to iterate over both at the same time?
Something like
for each _x as X, _y as Y in List(of x), List(of y)
if _x.item = _y.item then
'do something
end if
next
These lists may be of differing sizes. I am using .Net2.0 which I suspect is my downfall here as I have a feeling LINQ would solve something like easily by joining the lists on there common id.
can i create IE extensions with vb.net? and if so where do i start?
View 9 Replies