Iterate Over A Collection Of Anonymous Type In .NET
Jun 22, 2011I'm OK with both C# and VB.NET..I have a function GetListOfBook, that returns LINQ to SQL result that has a collection of objects like the following:[code]
View 4 RepliesI'm OK with both C# and VB.NET..I have a function GetListOfBook, that returns LINQ to SQL result that has a collection of objects like the following:[code]
View 4 RepliesEvery LINQ example I have seen for VB.NET anonymous types claims I can do something like this:
[code]...
Now when I go to iterate through the collection(see example below), I get an error that says "Name "x" is not declared. For Each x in Infos It's like VB.NET doesn't understand that Infos is a collection of anonymous types created by LINQ and wants me to declare "x" as some type. (Wouldn't this defeat the purpose of an anonymous type?) I have added the references to System.Data.Linq and System.Data.DataSetExtensions to my project. Here is what I am importing with the class:
[code]...
I'm a Linq noobie, maybe someone can point me in the right direction. What's wrong here? These anonymous types seem to have the same signatures.
[Code]...
I am sure i am doing something terribly wrong, but i should better ask the experts.
At the third line i get the error Value of type <anonymous type> cannot be converted to <anonymous type>
Dim Query = (From c In Db.web Select New With {.AA = c.AA}).ToList
Dim v = New With {.Amount = 108}
Query.Add(v)
[This is a simplified example] I have a collection ("myCollection") in which exists three entries: ("hello", "goodbye", "welcome"). I want to iterate through the collection and if in the collection there is the entry "welcome" I want to take one action, if that entry doesn't exist I want to do something else. Like this (pseudo):
[Code]...
I have created a collection of structures. Each structure, of course, contains fields.
Lets say something like:
Public Structure clientStructure
Public ID As String
Public firstName As String
[Code]....
How can I access a field of a particular structure using for.... each?
That is, how can I retrieve out of the collection (lets say item 5's) firstName, using for...each?
Private Function GetWebDataGridOKButtonId() As String
Dim ctls As ControlCollection = _
WebDataGrid1.Controls(0).Controls(0).Controls
[Code]....
This is not working for me. I am trying to iterate a control collection and return one control ID.
I've pieced together some information from other posts but I'm stuck. The first part works fine. Basically I query the database using LINQ and then I loop through the results generating a report.
[Code]...
The documentation has an example about grouping on multiple properties[code]...
Is it possible to rewrite the original query to just return IEnumerable(Of CustomerRegionGroup), or do I have to use the anonymous type, and run a second query on the result of the first?
I am trying to figure out how to get at an anonymous typed object's properties, when that anonymous type isn't created in the current function.
Specifically, I am binding an ASP.NET ListView to LINQ resultset, then trying to process each item in the ItemDataBound event.
Option Explicit On
Option Strict On
Class MyPageClass
[Code]....
Why did the anonymous type property "Points" still have the value "0"? [code]
View 1 RepliesIn MVC I can do something like the following to serialise an object with an anonymous type to JSON.[code]I'd like to do exactly the same but output xml. I haven't been able to find an equivalent method. Would someone please point me in the right direction?
View 2 RepliesI need to Convert a Ienumerable to a dataset. For this i need to write a common fnction to convert any IEnumberable type to Dataset. For this I need to set anonymous type.[code]...
View 1 RepliesI'm out of my depth populating a windows form from an XML linq query (see code further down in post). The listbox is populated as intended, when a value is selected (row) I would like to populate the remaining form controls. The linq query I believe has created a new datatype "Anonymous Types". The query is only local to the load form subroutine but I'm not sure how to make it global.
When I define the query simply as an object the code in the selectedValueChanged event can't execute due to late databinding. how I can initially load the listbox from linq xml query and then populate the other controls when the value changes? Am I right in thinking even though the listbox is multi-columns (property) you can ONLY ever reference a row and NOT a column? I'm new to LINQ and Anonymous Types and the more I read the more confused I seem to get. On a less important note the order by is not functioning as intended (no errors) but data is always retrieved in xml file order and not by the node <text>. Also looked at using <text>.first to order the results without success.
[Code]...
I'd like to create a list of an anonymous type, for example:
Dim dsResource = New With {.Name = dsResourcesEnd(index).Last_Name & ", " & dsResourcesEnd(index).First_Name _
, .StartDate = dsResourcesStart(index).Day _
, .EndDate = dsResourcesEnd(index).Day}
I have created that anonymous type. Now I'd like to add it to a list of that type. How do I declare a list of that type?
After reading this post i realized that i cannot pass an anonymous type as a parameter to a function. So what other options do i have?
Perhaps, passing a Query.ToList as parameter would help, or am i re-inventing the wheel?
Update: I have the following query, which i would like to pass to a function:
Sub Test
Dim Query = (From c In DB Select New With { .ElementName = c.Name })
DoSomething(Query)
[Code].....
(using VB 08!) In order to avoid "magic strings", I have used this handy method (not my own!) many times to get a property's name as a string:
Function GetPropertyName(Of T, R)(ByVal expression As
Linq.Expressions.Expression(Of Func(Of T, R))) As
String
[Code].....
I'm trying to write a linq to object query in vb.net, here is the c# version of what I'm trying to achieve (I'm running this in linqpad):
void Main()
{
var items = GetArray(
[code].....
I am using linq to fill a gridview with the information from an xml from code behind. I would like to order my Grid according to one of my elements in the xml ("value element").
gvResourceEditor.DataSource = (From resElem In resourceElements.Elements("data") _
Select New With { _
.Key = resElem.Attribute("name").Value, _
.Value = HttpUtility.HtmlEncode(resElem.Element("value").Value), _
.Comment = If(resElem.Element("comment") IsNot Nothing, HttpUtility.HtmlEncode(resElem.Element("comment").Value), String.Empty) _
}).OrderBy(?????)
Consider the requirement to always declare Option Strict On. We'll always need to declare variables with the As keyword. What would be the type of an anonymous type?Example : Dim product As ... = New With { Key .Name = "paperclips", .Price = 1.29 }
View 2 RepliesI have this if statement, which returns the result as a AsQueryable to an anonymous type:
If (signature = "") Then
testResults = (From TRTable In context.TestResults
Where ((TRTable.Art_no = currentProduct) And (TRTable.Server_time > startDate) And (TRTable.Server_time < endDate))
[code]....
I can't seem to figure out why it isn't working, it was working without the if statement, but I need that functionality.
I have the following Data Transfer Objects defined:
Public Class MemberWithAddressesDTO
Public Property Member_PK As Integer
Public Property Firstname As String
Public Property DefaultAddress As AddressDTO
Public Property Addresses As IQueryable(Of AddressDTO)
End Class
[Code]...
I'm learning LINQ and VB and just spent an hour trying to access the fields of an anonymous type defined in a linq query. The key (I learned) is to convert the query to a list before you try to iterate through it with a for loop. How to access property of anonymous type in C#?
This does not work: edit (this compiles, but intellisense does not recognize the type)[code]...
So I'm writing a query as follows:
Dim assSummary = From a In db.Assignments
Join ur In db.UserRegions
On a.Origin.ID Equals ur.Region.ID
[code]....
In the controller I can return the data easily as follows:
For Each c In assSummary
MsgBox(c.Description & " " & c.AssCount)
Next
If I pass the object through to the view using Viewdata("assSummary") = assSummary, how do I display the data? Every method I've tried results in messages about 'VB$AnonymousType_7(Of Integer,String) and I don't know how to retrieve the data from the anonymous type.
I am trying to make it so when I use Me.Controls("Timer1") for example I can access specific commands for a timer such as Stop() Start(), I tried CType() and typed in "Timer" as the type but it says the control type can't be converted to the "Timer" type.
View 11 RepliesI have a class that hosts inside other classes that can host otherclases as well and so on.
I want to change the value of one property (PropertyA) in all classes down the tree.
How can i do that when i dont know the the type of class inside?
How can i iterate through the classes hostes as proeprty of the mother class?
I am trying to use reflection but i get just the properties of the first class
Ok i'm trying to declare a global list of type T (or is it <anonymous type>) i declare it in a module with something like Friend query As New List(of {whatever type i try}) the app takes some xml and parses it into a list but i need this list available to other classes and methods within the app, everything i have tried fails resulting in an error like Value of type 'System.Collections.Generic.List(Of <anonymous type>)' cannot be converted to 'System.Collections.Generic.List(Of {whatever type i try})'.
What would be the correct way to declare a list of this type? is there another way i could do this?
Just so it's known, this question is mostly academic, even though I tried to use the concept in a real-world solution. I realize the example is contrived, but I believe the concept is valid.I want to write some fluent code like this:
[code]...
I realize that I can't force an anonymous type into a specific type (like implementing an interface or some other class), and I don't want the overhead of defining a specific class just to match my desired fluent name with the actual method name. So I was able to make the code work like this:
copy(my_first_file).to.Invoke(my_second_file)So there is no IntelliSense or type awareness there, and I have to include the Invoke in order to have the method run. How can I get more type safety and exclude the Invoke method, under these constraints: Anonymous Type returned from Method No additional classes or interfaces Preferably, I do not want to pass in another parameter to the copy() method that tells what type to return, unless copy becomes a generic method (but I think that means defining another class/interface, which I don't want to do)
GetDocumentType() works fine but adding into the collection cause error, it is not adding anything into it.
Imports System
Imports System.Collections.Generic
Imports System.Collections
Imports System.Collections.ObjectModel
[Code] .....
I can't figure out how to determine the type of an object in a collection. I want to do a For Each ... Next loop over the items in the DropDownItems collection of a ToolStripMenuItem. For those items that are ToolStripMenuItems themselves I want to take some kind of action. (The collection can contain other types of items, such as ToolStripSeparators). So I need to say something like: If Typeof(item) = ToolStripMenuItem Then .
View 1 Replies