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?
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?
why the next example throws a System.ArrayTypeMismatchException?New Int16(){4,5,6}.Cast(of UInt16).ToArray()I expected that this line returned a UInt16 array containing 4,5 and 6.
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
I'm binding a DataGridView to a BindingSource to a LINQ IEnumerable, I found that the BindingSource.Find method throws an exception because .Find isn't implemented in IEnumerable (and the BindingSource just passes the call to it's DataSource). I need to use BindingSource.Find to select/highlight a particular row in the DataGridView.
Is there a feasable way to extend my DataContext to support this behavior w/o breaking anything else? I expected to find the code out there already, but I've searched exaustively with no luck.Without it, I cannot "move" the BindingSource using .Position and that's a pretty common use of the BindingSource I think.
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):
I am trying to get my head around collections and enumberators. I wanted to find out how the GetEnumberator property works for a Tabcontrol and what uses there are for it. But as I mentioned, I am new to .Net and I am baffled.
Dim x As IEnumerator Dim y As TabPageCollection = TabControl1.TabPages x = TabControl1.TabPages.GetEnumerator
I implemented a PagedModel class to wrap around IEnumerable to provide paging data for grids in my MVC app.I used Resharper's auto-generated Equality code telling it to check the data, total rows, page number, and page size fields.[code]I found the call to Equals(other._ModelData, _ModelData) peculiar, as AFAIK, this checks that it is the same object rather than that the contained items are the same. Because my tests were failing anyways, I went ahead and changed it to other._ModelData.Equals(_ModelData) with no success. Then I reflected into it at debug time and found that other._ ModelData.GetType().GetMethod("Equals",{GetType(Object)}).DeclaringType was Object! Obviously, that would result in the failed comparison.I came up with a solution to create a EnumerableEquals method which compares every item in the two enumerables to confirm the are the same, but it seems sloppy. Is there anything I can do to use the normal .Equals method? [code]
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?
Possibly a dup but I tried googling and searching here before posting. Assume a 2 column table with columns Age (int) and EmpName (string) A datatable can be converted to IEnumerable by a simple dbTable.AsEnumerable() Now to perform any Linq you must know the column names since intellisense will not pick it up due the fact that AsEnumerable has returned a bunch of datarows that you can enumerate. I have used a small 2 col table but for tables with many columns it is a pain. So most of the time we try something like
I desperately need this VB.NET code converted to PHP.This is the Instructions I received:To test your encryption, encrypt the following word with these keys and check if you get the same result:
Text to encrypt: MyPassword Salt key: *&^%$#@! PBE Key: FWV70700[code].....
I have the following in C#: public static void StartAnimation(UIElement animatableElement, DependencyProperty dependencyProperty, double toValue, double animationDurationSeconds, EventHandler completedEvent)
I've been trying to figure out how to do this for some time now and keep coming up short, so I'm hoping to get some good suggestions.
I'm making an application that will allow the user to add some labels during runtime, edit their text, and then 'build' the designer that would output code for a scripting language.
The people using this app are creating the scripts using Notepad++ at the moment, but aren't developers in any way and would like an easier, point and click method.[code]...
i want to extend the integer class to a method that increments current integer value by 2. I create a console application and a second module which contains the extension method.
and everything works fine. The extension method module can be imported to any other project (Project-->add existing item --> select the vb file that contains the extension method module) and works fine too. But the code is accessible to other users. Is there a method to convert the extension method module to a dll and adding it to other projects as a reference. I tried to do it with creating a class project and pasting the code of the extension method module and compile the dll and then added it as reference to another project and imported the class with the keyword imports, but it didn't work.
I have some files in vb.net that have "Option Strict Off" to allow for bad programming. When I convert to c# I use "dynamic" until I come back and fix problems, and this works in all cases But now I have this code:
Public Class ContractResults 'Big class definition Public Shared Sub CleanCache()
[code].....
And in a file with Option Strict Off:
Public Sub VerifyResults(result as Object) 'Here, result is normally ContractResults 'first it check for that then call this: result.CleanCache() End Sub
In c# I use "dynamic", but a runtime error pops up when I call "static" method with dynamic reference. In vb.net, I can called "shared" sub from instance, but in c# this is not allowed
Exception: "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException" "Member 'ContractTypes.ContractResults.CleanCache()' cannot be accessed with an instance reference; qualify it with a type name instead"
It seems I must convert code to use actual type, but then this means much rewriting of more parts. Is anyone able to show another way?I want to make sure you do not think I can use (result as ContractResults).CleanCache();Because all types that may be passed in have "CleanCache()" method, but do not inherits from anything the same other than "Object". There are many types (30!) that have this "static" method and so that is why it uses Option Strict Off?
Consider a MyForm class that contains a shadowed implementation of Show(). It also contains a CreateForm() method, which accepts an instance of the form and calls the shadowed sub:
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)
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)
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
when 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
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 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:
**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?