C# - Using Iteration Variable In A Lambda Expression?
Feb 16, 2012[URL]..Module Module1
[Code]...
It says the result will always be 5 namely the final value of i. How come?
They don't put the iteration variable in the "closure"?
[URL]..Module Module1
[Code]...
It says the result will always be 5 namely the final value of i. How come?
They don't put the iteration variable in the "closure"?
Edit: Here is a much more simpler example of this issue (i've deleted my original question):
Dim numbers1 As New List(Of Int32)({1, 2, 3})
Dim numbers2 As New List(Of Int32)({3, 4, 5})
For Each n1 In numbers1
' no warning '
Dim contains = numbers2.Contains(n1)
Next
[Code]...
The local variable number1 is redundant and makes the code less readable as @Meta-Knight already has emphasized. Note: All three ways are safe and give the correct result.
Possible Duplicate:Why is it bad to use a iteration variable in a lambda expression.why do I get: "iteration variable in a lambda expression may have unexpected results"? Suppose I have the following code:
[Code]...
I'm working with LINQ in VB.NET and sometimes I get to a query like
For i = 0 To 10
Dim num = (From n In numbers Where n Mod i = 0 Select n).First()
Next
[code].....
I have a lambda expression that builds a list ofanonymous types. I would like to include a property in the anonymous type that is a counter. So the first entry is 1, second 2, third 3, and so on.I thought I recallenyone know the syntax for defining an indexing variable as part of a Linq query or lambda expression?
View 10 RepliesI got this Error. below is my code.
GenerateTheList is function.Need help
Private Sub buttGenerate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buttGenerate.Click
Dim thread1 As New Thread(New ThreadStart(GenerateTheList))
thread1.Start()
End Sub
From this code
[Code]...
If I put New Action(AddressOf PrivateMesage), then I get the following error: Bounds can be specified only for the top-level array when initializing an array of arrays. on the following code
[Code]...
I am dumb founded at this statement....maybe its just too many hours/days of doing C# to VB.Net conversion but i am drawing a blank on this conversion.
List<string> sColors = new List<string>(this.CustomPaletteValues.Split(','));
try {
List<Color> colors = sColors.ConvertAll<Color>(s => (Color)(new ColorConverter().ConvertFromString(s)));
What i have so far:
Dim colors As List(Of Color) = sColors.ConvertAll(Of Color)(....)
As you can see its the content of the lambda that i am hitting a brick wall with.
In looking at Fuzzy Date Time Picker Control in C# .NET? Piotr Czaapla's answer to that question is exactly what I need. unfortunately, I'm a VB.NET guy and I'm not that familiar with lambda expresions, so my attempts to convert the code have resulted in hours of misplaced parenthesis and banging my head with a brick.
Any chance some bi-lingual wizard could convert the C# code to VB.net for me?
[Code]...
Using lambda's in VB.Net results in no intellisense. Is this a bug with VS2010 or expected? Note that it works fine in C#
Return Array.TrueForAll(chequeColl, Function(x) x.Number <> "N") 'No intellisense Number does not appear
Return Array.TrueForAll(chequeColl, Function(x As MyClass) x.Number <> "N") 'Now casted intellisense appears
UPDATE: Here's an example
Public Class Cheque
Public Property Id As String
Public Property Status As Byte
[code]....
How should the following C# code be converted to VB.Net? I have tried several code converters and none produce correct results.
[code]...
I will probably sound like a bad developer here, but I am attempting to convert some code from the following page from C# to VB.NET:The code I am having trouble converting is from Step 4 of "Joining a Multicast Group" on the page, and here is the code with the comment lines removed:
private void Join()
{
_receiveBuffer = new byte[MAX_MESSAGE_SIZE];
[code].....
I want to implement this function:
Public Function GetFunc(Of TSource, TResult) _
selector As Expression(Of Func(Of TSource, TResult)) _
As Func(Of TSource, TResult)
[code]....
UPDATE:I have the following issue, it's a part of a function:
Dim obj As Object = value
For Each exp In expressions
If obj Is Nothing Then Return [default]
[code]....
Exception Details:
ArgumentException:Object of type 'System.Linq.Expressions.Expression`1 [System.Func`3[System.Char,System.Char,System.Char]]'cannot be converted to type 'System.Func`3[System.Char,System.Char,System.Char]'.
If been try to convert some code I have from VB.net to C# but I just cannot get it working!first is the vb code I'm only interested in the line that has the Lambda Expression for the C#[code]......
View 2 RepliesCurrently, I have code similar to this:
xxx, _
If(dr.Table.Columns.Contains("EnterpriseID"), dr.Field(Of Integer)("EnterpriseID"), -1), _
xxx
I would like to create a Lamdba expression something like the following (this doesn't work):
Dim xCol As Func(Of DataRow, String, Type, Object, Object) = _
Function(dr, x, t, dflt) _
If(dr.Table.Columns.Contains(x), dr.field(Of t)(x), dflt)
So that I can say something like:
xxx, _
xCol(dr, "EnterpriseID", GetType(System.Integer), -1), _
xxx
I know in VB Lambda expressions must return a value and can only have one statement. But in my case I just need to execute a Sub that does not return a value. Is there a way to trick it by somehow returning a dummy value yet still call my Sub? If possible what would the syntax be like?
View 3 RepliesI am having an issue using the vb equivilant of the MAX lambda expression. at foos.Max(function(x) x.id) when I try to intellisense the property ID VS will not show it. But when i run the example it works. Is there something I am doing which is wrong, an i am just lucky it runs? [Code]
View 1 RepliesThere is the code:
Private Sub InsertItemInCache(Of T)(ByVal item As CachedItem(Of T), ByVal dependency As AggregateCacheDependency, _
ByVal key As String, ByVal updateCallBack As CacheItemUpdateCallback)
[code].....
Is the warning I am receiving about using the iteration variable in this line a concern.
Dim reportdataforpage = (From reportvar In reportdata Where reportvar.reportpage = pagenum)
I am Creating a Lambda Expression, but it' not getting me the write Out put :
Public Class Form1
Delegate Function GetLastChar(ByVal S As String) As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
[code]....
I want Send a Name like "Arindam" and its return me "m", the last character.but in messagbox return value shows "fasle" I can't under stand why it's showing "False" instead of "m", the last character.
I am having a generic ListOf-collection holding the self-created User-object, I can filter for users by using lambda-expression like this:
Dim reviewers As List(Of User) = users.Where(Function(u) u.DvRoleID = 2).ToList
Instead of using the lambda expression I can also write the function and call it as argument like this:
Public Function GetReviewer1(ByVal u As User) As Boolean
If u.DvRoleID = 2 Then
Return True
[Code] .....
Now the question: why can't I create a delegate having the same signature as the GetReviewer1 function and use the delegate as argument inside the where-clause like this:
Delegate Function Criteria(ByVal u As User) As Boolean
Public Function GetReviewer1(ByVal u As User) As Boolean
If u.DvRoleID = 2 Then
[Code] .....
The compiler does not accept the crit delegate as argument.
I am trying to see if the controller class name is the name of the controller name passed in. I think my lambda expression is wrong and that is why it isn't working properly. I am passing in the correct controller names, but the export variable is always null.
Public Function CreateController(requestContext As System.Web.Routing.RequestContext,
controllerName As String)
[Code].....
In MSDN documentation defination about lambda expression is "A lambda expression is a function or subroutine without a name that can be used wherever a delegate is valid ". Here validity of delegate is necessery only when we are passing lambda expression as an argument to a method.
[Code]...
Lambda expression with ternary operator in VB?
View 15 RepliesWhere can I find complex LINQ examples made using VB.NET Lambda Expression syntax?During my searches I always found 101 LINQ Samples but they use the other notation and for me is not always clear how to transform that code into a lambda expression.
View 1 RepliesIn Entity Framework I usually do something like:
modelBuilder.Entity(Of Model).HasKey(Function(item As Model) New With {item.PropertyA, item.PropertyB })
to map a composite primary key
I need to write a generic function like[code]....
Should I be concerned about the performance of the Compile method here?[code]...
The reason I want the lambda expression is because I want that function to be able to get all the way through LINQ-to-SQL to be converted to SQL. The reason I want the direct version is because I have other code that I want to validate individual serial numbers before submitting changes. And I fear that GetValidSerialNumbers.Contains(serialNumber) will execute a more-complex-than-necesssary query.
With ASP.NET MVC 1.0, .NET 3.5 and C# you can easily pass a method a lambda expression that will do a "Response.Write" some content when it's executed within the method[code]...
View 1 Repliesis there any perfect tool of converting C# and lambda expressions into vb.net code.
View 9 RepliesI've been wondering about lambda expressions for a while now.Consider the following code..[code]But in the lambda expression I have access to all Sub Main's variables.
View 3 Replies