I need to test a logical expression held in a string to see if it evaluate to TRUE or FALSE.(the strig is built dynamically)For example the resulting string may contain "'dog'<'cat' OR (1>4 AND 4<6)". There are no variables in the string, it will logically evaluate. It will only contain simple operators = > < >< >= <= and AND , OR and Open and Close Brackets, string constants and numbers. (converted to correct syntax && || etc.)
I currently acheive this by creating a jscipt function and compiling it into a .dll. I then reference the .dll in my VB.NET project.
class ExpressionEvaluator
{
function Evaluate(Expression : String)
{
return eval(Expression);
}
}
Is there a simpler method using built in .NET functions or Lamdba expressions.
I need to execute scripted text formulas. I believe that in VB 6 and/or VBA there was a method EVAL() that did the job, eg: [Code] As it seems, such a method does not exist in VB.NET. [url] The method works fine but due to its comprehensive layout its not that fast (as i need to call it myriad of times) Does anyone have a SIMPLE, FAST, straight forward math expression method? Or anyone knows how to use the old EVAL method in VB.NET?
I've seen the operator Max used two different ways. The following two queries produce the same results. The MSIL code is slightly different. What is the benefit of using the Aggregate operator? Logically, is there a difference?
I'm having a little trouble converting some LINQ to VB.[code]Online code translators are not helping, and my unfamiliarly with VB LINQ is not very good.
1) I am begginner to dynamic Linq and having serious trouble creating expression tree after WHERE
say.: items.Category_ID=4
I tried to construct it like: Dim products = From items In mydatacontent.Products
Dim AA As ParameterExpression = Expression.Parameter(GetType(String), "items")
Dim left1 As Expression = Expression.Property(AA, GetType(String).GetProperty("Category_ID")) here is the error Dim right1 As Expression = Expression.Constant("4") Dim BB As Expression = Expression.Equal(left1, right1)
Where 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.
[code]The LINQ query going into "result" is incomplete because I'm stumped at what is happening there. I expect FirstOrDefault to refer to refer to a single Child object at that point in the expression, but it refers to a collection of child objects. Why? What is the best way to get a list of parents that have no associated child or have a child fitting a particular condition? (My actual code will have one child max, so this sample code is not representative.)I just don't understand what the collection of FirstOrDefault could be referring to. It should really be just 1 value or nothing at all times.
I know there are similar questions on stackoverflow - and I looked through them and think my issue is somewhat similar, but haven't been able to find a solution by looking at any of these other questions/answers.I'm getting the error when attempting to execute the following code:
Private Sub btnReserve_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnReserve.Click ' Check that the room is still available. Dim dbCheckOccupants As New pbu_housingEntities Dim hall As String = CStr(Session("hall"))
[code]....
It is catching an error on this line:
Dim myID As String = GetID.First.id.ToString
As far as I can tell I'm not using multiple contexts?
Of the 51 Standard Query Operators (of which only 42 are actually query operators), only 24 are directly supported by Visual Basic 9 and just 11 by C# 3: Query Expression Syntax for Standard Query Operators.In many cases, query syntax is arguably more readable than the equivalent method syntax, especially when transparent identifiers are involved. However, that readability breaks down if you have to combine queries and method calls.So the question: What query operators, current or hypothetical, would you like to have your language of choice support in query expression syntax?
I am trying to convert the following code for the variance calculation public static double Variance(this IEnumerable<double> source){ double avg = source.Average(); double d = source.Aggregate(0.0, (total, next) => total += Math.Pow(next - avg, 2)); return d / (source.Count() - 1); } Described on CodeProject into corresponded VB.NET lambda expression syntax, but I am stuck in the conversion of Aggregate function. How can I implement that code in VB.NET?
I have a query that I cannot seem to replicate in expression method chain syntax. I have two tables "User" and "UserPayment". User and UserPayment have a one to many relation i.e. One User can have many UserPayments.
I am finding this weird issue. When I do this > activities.Where(Function(a) (Not a.IsDeleted And a.ParentId = 100) It returns an in-memory query & when I try opening it up, it throws a object not set exception. This only happens when there were no items which satisfied the condition. Shouldn't it be returning an empty set? When there are items satisfying the condition, then it returns a list & works all good.
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?
I have a requirement where I have to add items into a List(Of T) (let's call it Target) from an IEnumerable(Of T) (let's call it Source) using Target.AddRange() in VB.NET.
The ? part is a tricky condition that is something like: As long as the as yet unenumerated count is not equal to what is needed to fill the list to the minimum required then randomly decide if the current item should be taken, otherwise take the item.Somethig like...
Source.Count() - Index = _minimum_required - _curr_count_of_items_taken _ OrElse GetRandomNumberBetween1And100() <= _probability_this_item_is_taken ' _minimum_required and _probability_this_item_is_taken are constants
The confounding part is that _curr_count_of_items_taken needs to be incremented each time the TakeWhile statement is satisfied. How would I go about doing that? I'm also open to a solution that uses any other LINQ methods (Aggregate, Where, etc.) instead of TakeWhile.If all else fails then I will go back to using a good old for-loop =)
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
I currently have a View in MVC where I pass a single set of data to the view. However, I've come across a problem where I am having to use a LINQ query within a For Each loop in the View to pull out additional information from a SQL View of data from another DB.
The error I'm getting is Late binding operations cannot be converted to an expression tree.
The particular snippet I'm encountering the error on is:
I've build a large program with many references. F.e.:
System.Data.DataSetExtensions System.Linq.Dynamic
I've to write a Dynamic Linq Expression: [URL]
In my case: Dim query As IEnumerable = ds.Sales.Where(strWhere)
But with System.Data.DataSetExtensions Where is misinterpreted. The compiler expects (Datarow, Integer, Boolean). If I delete System.Data.DataSetExtensions everything is ok with this expression, but I get many other errors, so I need this reference. What can I do that the Where is interpreted correctly?
Can a LINQ or a LAMBDA expression be used to count the 1's in a binary string ?For example, if I convert a number to its BINARY using.>>
Dim binaryString As String = Convert.ToString( numberVariable, 2 )
1) Without using a loop such as a FOR NEXT loop, can I count the number of 1's in the STRING using LINQ or a LAMBDA expression?
2) Can I get the indexes of where the 1's are at in a collection such as a LIST using LINQ or a LAMBDA expression?I know the syntax of some LINQ expressions, however, I don't know which method may be suitable.
The following LINQ query resp. call of the extension method Select in Visual Basic 2010 is working fine:
Dim qAvSalary = qJobData.Select(Function(e) e.AvSalary) But doing so I am not able to specify the name of property I want the query (e.g. AvSalary) using a string variable. This should be possible if I use a LINQ expression tree. Searching and trying a long time on how to translate the query to a corresponding expression tree was not successful. My final approach is:
I have built a database structure that represents a category tree to help classify some of the data we have stored. The implementation is that each record in the Category table has a nullable foreign key back into the Category table to represent the parent Category of this category (one-to-many), essentially allowing for subcategories within a broader parent level. There is a CategoryMembership table that links a record in the Item table to its respective Category (many-to-many). I have created the DBML for this database, and it has a member access structure that includes the following:
I have a list of properties and values that i'd like to use to dynamically build an Expression(Of Func(Of MyClass,MyClass))
I can run through the list and create each Expression by itself, but the only way I know how to combine them would be to use Expression.And or Expression.AndAlso, but that returns a BinaryExpression rather than my original Expression(Of Func(Of MyClass,MyClass)).