Generic LINQ Extension For Calculating Weighted Average
May 14, 2012
I wrote the following generic LINQ extension for calculating weighted average in Visual Basic 2010:
<Extension()>
Function WeightedAverage(Of T)(ByVal source As IEnumerable(Of T),
ByVal selectorValue As Func(Of T, Integer),
ByVal selectorWeight As Func(Of T, Integer)) As Double
Dim weightedValueSum As Double
Dim weightSum As Integer
[Code] .....
How can I call this function as an Aggregate function of another LINQ query? I tried it in the following way:
Dim q1 = From jd In oContext.JobDatas
Where jd.Year = 2011
Select jd
Dim q2 = Aggregate num In q1 Into WeightedAverage(num.AvSalary, num.NumPosHolder)
The Visual Basic 2010 editor is telling me that the second query (q2) of the following code is not valid statement. On the comma between the first an second argument it's saying: ")" required.
I am having a bit of difficulty figuring out a way to calculate the weighted probability (weighted "random" numbers) and apply it directly to the selection of a given line of a text file. In short, I wish to have a text file, where each line has it's own probability of being chosen (obviously not all would be the same). I wish the probability to be dynamic, and based off of thirds. As in, say I have 9 lines in a given text file, and I wish to weight the probability of the first three to be significantly higher than the 2/3 and the 3/3 portion of the text document.
Example: Line 1 20% Line 2 20% Line 3 20% Line 4 10% Line 5 10% Line 6 10% Line 7 3.3% Line 8 3.3% Line 9 3.3%
With the above logic, first 1/3 of the lines = 60% sum total, middle 2/3 = sum total of 30%, and the last 3 are a sum total of 9.9% repeating. How would I go about achieving this dynamic assignment of probability, and choosing them randomly, based off of the given weight?
I'm working on a function to return a exponential average and there are a lot of examples of exponential moving averages but they all start with a moving average that is just the mean as a lead in to calculating the continuing moving average. I needed just a exponential average of a value set. After Googling my Bing off I still haven't seen anything so here is my attempt at a basic exponential average. Is this correct? Are there any errors? I have seen some text about adding a smoothing value to change the curve of the exponential average but not how that would be implemented.
here is my problem. i have to enter two grades, each grade should be an integer between 0 and 100 inclusive. Calculate the average of the two grades. If the average is greater than or equal to 90, display "Grade is an A!". It goes down the line for "if average is _______, display " ______is a/n __!" I get the last part and I know how to figure an average...but i am not sure how to type it in code. He did an elseif example, but it wasn't with 2 numbers and didn't have to average anything. So I don't know how to write that code....is there anywhere to look to find it? Here is what I have so far.............
Module Module1 Sub Main() Dim grade, sum, average As Double
Using VB.NET write a program that can calculate the grade of a student based on his or her marks in five subjects as input according to the following rules:
Grade A: For average between 100 and 80 (inclusive) Grade B: For average between 79 and 65 (inclusive) Grade C: For average between 64 and 40 (inclusive)
The idea of this program is to calculate and find total and average for 3 Students automatically. That is when the first data is entered and click on button the total and average of first student should be displayed in listbox. And we should be able to enter second data. Bu the problem is it is just printing the first average and total thrice.
Dim a As String Dim tot, avg, N As Single Dim I As Integer For I = 1 To 3 tot = Val(TextBox2.Text) + Val(TextBox3.Text) + Val(TextBox4.Text) + Val(TextBox5.Text) + Val(TextBox6.Text) [Code] .....
need to make sure I got everything right for my Calculate Button in displaying the Total and Average.
Option Explicit On Option Strict On Public Class Grades
[code]....
My problem is mostly in the Calculate Button, what is CStr? I already used that because I set my Explicit On and that suggested it. Also when I debug I enter my 3 grades and click calculate, 0 is displayed in both my Total and Average Label box.For the Average, how would I display it to 2 decimal places?How would I set a parameter for the exam scores to be between 0-100?Would it be Try/Catch? And where would I place that coding?How do I convert my textboxes to integers?
Im having a problem getting my calculations to work. I need to find the average letters per word.
Private Sub btnCount_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCount.Click 'Determine word count and average letters / word in the sentence
I'm having a problem creating a function for calculating an average. I need to divide the sum of a column of integers by the number of rows in that column. These integers are generated by a datediff command and their values are assigned to textboxes in a report. The results can only be whole numbers, no decimal points.
I'm pretty new to this so if this is an obvious question please excuse my ignorance. If you need any more information to address my question please let me know.
I am making this for a homework assignment and i need to calculate the average for values entered in textbox1 and place them in other textboxes. I dont understand how to do this with numbers all placed in the same spot. here is my code thus far:
Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click End Sub
I'm doing an assignment for class which is basically a simple program that takes 12 monthly temperatures and averages them. But I also need to round the average to the nearest tenth. I am not particularly good at programming or math and don't know how I would fit this into my code. I am Including My program thus far. I put in bold and italic where the calculation takes place.
Private Sub btnEmterTemperature_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEmterTemperature.Click 'FOR BUTTON CLICK EVENT "ENTER TEMPERATURE"
OK, so I've been given an assignment due for Monday, which was to create a console program which allows the user to enter an unknown quantity of numbers, then have the Mean, Median and Mode averages displayed of said group of numbers.
So far I've managed to get the Mean and Median to work, for both odd and even quantities of variables. I am however stuck on getting it to calculate the modal average! I don't really know how to approach this, would a structure with two fields, variable and quantity of variable, work?
Below is the code, I haven't made it display discrete of continuous data yet, I'm leaving that for the end.
Module Module1 Sub Main() Start: 'Declare Variables
[Code].....
I imagine this is quite elementary for most of you, I unfortunately received no replies what-so-ever to my last thread...
PS: Why isn't there an option for UK in the two letter country codes?
I'm trying to calculate the rolling average in a crystal report. I have got 4 weeks in a month, and I have calculated the average for each week so long. Now I want to calculate a rolling average. eg:
For week1: rolling average = (week1Average)/1 For week2: rolling average = (week1Average + week2Average)/2 For week3: rolling average = (week1Average + week2Average + week3Average)/3 etc.
The problem with the code below is that, it is not looping through,therefore the rolling average for each week is the same as its average value wich is not correct.
Dim i, weekNum as number Dim tot as double weekNum =Distinctcount({ItemRating.WeekNo})
I have a custom list that inherits Generic.List and it has a method for deselecting all of the members named DeselectAll It has looked like this for a few weeks and has worked fine.
Public Sub DeselectAll() MyBase.ForEach(Function(p As Publipostable) p.ModeEnvoiChoisi = Nothing) End Sub
Today, it stopped working ?!? I reverted to an earlier version using delegates and that works fine...
Public Sub DeselectAll() MyBase.ForEach(AddressOf DeselectModeEnvoi) End Sub
[code]....
Edit: Stopped Working meaning it no longer sets the property p.ModeEnvoiChoisi to Nothing on each item in the list. The DeselectAll method gets called, but all the items retain their previous values...
I tried the following code: Dim T5NHCEDCavg As Double qry = From employee In empList Where employee.HCEDC = False And employee.X5 = False _ Select employee.DCFSA T5NHCEDCavg = qry.Average
But I'm getting a design-time error that says "Overload resolution failed because no accessible 'Average' accepts this number of arguments." I realize that I'm missing an overload here, but I'm not sure what to use or how to do this. I'm pretty new to LINQ. I've got a dataset in memory that I'm querying, and there is a double-precision property DCFSA, of which I'm trying to get the average based on my query above.
I need help on how can I transfer a query from Access to LinQ that calculate the average in time per transaction during a given date.the working Access query is:
Avg(DateDiff("s",CVDate(Format([start_time],"hh:nn:ss")),CVDate(Format([finish_time],"hh:nn:ss")))) AS Expr1, Format([Expr1]3600,"00") & ":" & Format(([Expr1]60) Mod 60,"00") & ":" & Format([Expr1] Mod 60,"00") AS format How can I port this to LinQ?
As I am beginner in LINQ, I have small problems. I have dictionary of Char and Long, and I would like to use LINQ to retrieve Char with highest Long Value. I saw some C# samples, which look pretty easy, but I can't achieve such expression in VB.Here are two expressions, and I don't think they are most efficient possible.
I have the code as below: Dim xdTest As XDocument = XDocument.Load(GetXMLPath()) Dim objResult = From xe In xdTest.Elements("Some Element") _ Where xe.Element("strName").Value = strInput _ Select xe.Element("intValue").Value objResult. I cannot access any extension methods for objResult, like .ToList() or .First(). The file imports System.Linq and the project is targeted to .NET 3.5. How do I get the extension methods back?
I'm trying to create a generic IsEmpty extension but am having problems specifically with dictionaries: The functions I have created:
<Extension()> Function IsEmpty(null As DBNull) As Boolean Return True End Function[code].....
For my purposes, booleans and numerics are never "empty".The problem is that dictionaries are using the generic (Of T)(val As T) function instead of the (collection As ICollection) function.
i.e.
Dim dict As New Dictionary(Of String,String) Response.Write(dict.IsEmpty)
output is "False"
I tried using (Of K,V)(collection As ICollection(Of KeyValuePair(Of K,V))) to no avail.What am I doing wrong?
I am trying to learn some VB.NET for my coo-op that starts next week, and for that reason i took my portfolio web site that is on C# and just started to converting it to VB.NET to get familiar with the syntax.
I am sure my problem is simple however i have a hard time solving it. I am trying to grab data with the linq query and then return it as list to bind to the Repeater.I have the following function:
[Code]...
And it would work fine. However if I try to use ToList() in VB.NET i am getting error that it cannot convert it from ling to sql List to the generic list. How do i do this convertion in VB.NET ? or maybe there is another way ?
I am decent when it comes to C# however somewhat lost with the VB.NET syntax.
I need to take a collection and group it via Linq but all the examples I've seen fail in some manner or other with some syntax difference that I can't quite lick.
My collection:
Dim a As New List(Of ProcessAlert) a.Add(New ProcessAlert("0000112367", "5551110000@txt.att.net", "Alert", 2)) a.Add(New ProcessAlert("0000112367", "5551110000@txt.att.net", "Document", 2))
I'm using .NET 3.5 In my DataLayer class I have references of System.Core,System.Data.Linq, System.Data.DataSetExtensions. But I cantnot use this feature in Linq query if I have Option Strict ON:
I have a function that works great in C# that I'm converting to VB.Net. I'm having an issue converting the result set to a generic list in VB.net.
The code:
Public Function GetCategories() As List(Of Category) Dim xmlDoc As XDocument = XDocument.Load("http://my_xml_api_url.com") Dim categories = (From category In xmlDoc.Descendants("Table") _ Select New Category()).ToList(Of Category)() Return categories End Function
The error occurs when convertng the result via .ToList(Of Category)() The error:
Public Function ToList() As System.Collections.Generic.List(Of TSource)' defined in 'System.Linq.Enumerable' is not generic (or has no free type parameters) and so cannot have type arguments.
Category is a simple object I've created, stored in the App_Code directory.
I have the necessary "Imports System.Collections.Generic" reference in the file so I don't see why I can't convert the result set to a generic list.
I would like to implement a generic Linq query on a DataGridView.DataSource to retreive a row whith an idField. I did search MSDN, StackOverflow, etc... but didn't quite find what I'm looking for. how I could implement it ?
This is the non-generic code, but I would like to make it work whatever the type of the DataSource is (as long as it implements IEnumerable I guess) and the name and type of the key field.
Dim query = (From note In notesList _ Where note.IdNote = mIdNoteSelectionne _ Select note).FirstOrDefault() Dim ancienIndex As Integer = notesList.IndexOf(query)
noteList is a List(Of Note), Note is a simple entity class I created, with just members and properties
This is in VB, but feel free to send some C# code, I'll translate it.
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:
Dim tenItem = From t In _InvalidFeeList _ From i In ItemCount _ Where t.FeeCode <> i.FeeCode _
[Code]....
I am getting "Can not convert to System.generic.list" error. I look all over for this error and it seem like my code should work for example here
edit: I think i should explain what I'm trying to do here. I want to compare two object list and select the object from the InvalidFeeList if the FeeCode is not equal to the object in ItemCount FeeCode and take the first 10 objects from the InvalidFeeList.
I have been writing same code for insert, update, delete with LINQ over and over again. I want to have some sort of generic function for Insert, Update, Delete operation. I read a post here like the following :
public static void Insert<T>(T entity) where T : class { using (OrcasDB database = new OrcasDB())