Using LINQ To Return First Item From Each Set Of Grouped Data
Apr 16, 2012
Given a simple DTO (AccountExpiry) with properties of 'AccountNo' and 'ExpiryDate' and a List of same created thus:
New AccountExpiry(123, New Date(2012, 4, 1))
New AccountExpiry(123, New Date(2012, 4, 2))
New AccountExpiry(123, New Date(2012, 4, 3))
New AccountExpiry(124, New Date(2012, 4, 2))
New AccountExpiry(124, New Date(2012, 4, 3))
New AccountExpiry(124, New Date(2012, 4, 4))
How do I use LINQ to retrieve the most recent entry per account. I have a feeling this will involve GroupBy and FirstOrDefault. It seems like...
From Item In Source Group By Item.AccountNo Into Group
Should return all of the data grouped appropriately, but It is unclear how I might apply .FirstOrDefault to each group.
I'm having some difficulty with a sorted & grouped listbox in WPF vb.net 3.5 that has an items source bound to an ObservableCollection.
What I want to be able to do is to retrieve a piece of data from the ObservableCollection items source depending on what item in the listbox the user has selected.I've almost got it working but because the listbox is sorted it does not match the index of the items source.
[code]...
As I previously mentioned, because the lstBox is sorted and also grouped the index's don't match up.Does anyone know how I can get the correct information I want from the List Source depending on the selected item in the list box?
I'm having trouble with a LINQ to SQL query getting the min value using Visual Basic. Here's the SQL:
SELECT RC.AssetID, MIN(RC.RecCode) AS RecCode, JA.EngineerNote from JobAssetRecCode RC JOIN JobAssets JA ON JA.AssetID = RC.AssetID AND JA.JobID = RC.JobID WHERE RC.InspState = 2 AND RC.RecCode > 0
What I'm trying to do is to write a generic rss reader that I plug in any URL into without worry if the feed has all the common properties. For instance in my example below I'm looking for pubDate, however if no pubDate exists in the xml I'd like to return the current Date. I cannot seem to get the syntax right though.
Dim xmldoc As New XDocument xmldoc = XDocument.Load(url) Dim feeds = From feed In xmldoc.Descendants("item") Select New With { _
I'm trying to do a LINQ Query against a typed datatable that will return me duplicated data.With out going into too much detail, here's the basic setup:
strCode1 - string type intCode1 - int32 type intAdjustor - int32
There are more fields but these are the ones that are important.I'm going to do my best to describe this, as it's kind of confusing.In theory intCode1 is a key for strCode1 (hence the names). So each time intCode1 is duplicated, the same strCode1 should appear. Example:
[code]...
Ultimately I'd like to get a List(Of T) - where T is my typed data row. In SQL, I would simply use a sub query, to get a distinct list of strCode1 and intCode1, then do a count, grouped by strCode1 where I get more than one row.I'm not sure how to translate that into LINQ, AND get the original types data rows returned in a list.
I am trying to build a survey engine from an existing database design which is like this.
[Code]...
The line Order By Key.RecordOrder throws a null reference exception and I can understand why. Can someone advise on how to resolve this by just modifying this one query? I am fairly new to LINQ and the necessity to write this project
I have a simple VB.NET 2008 app that users to edit fields in the database. Simple enough as a first "real" project in .NET, right?For one table, I am currently using a DataGridView so it can be edited straight up. However, instead of offering the user the entire table, I'd like to group the data by the 'CompanyNumber' column and use a navigator to page through. In other words, I'd like the DataGridView to show me all the lines related to one company, then click the "next" arrow to show the next company, etc.
I would like the following function to return Nothing if the element with the specified key is not in the collection. Instead, it returns an error - something to the effect of "no element found"
Public Class MyCollection Inherits System.Collections.ObjectModel.Collection(Of MyType) Public Function FindByActivityKey(ByVal searchValue As Integer) As MyType
We are doing a query against an in-memory collection of LINQ data objects. The wrinkle is that we are ordering by a column in a related table whose records have not necessarily been loaded yet (deferred loading:)
Dim oPkgProducts = _ From b In oBillPkg.BillProducts _ Where b.Successful.GetValueOrDefault(Common.X_INDETERMINATE) = _
I have a method that takes in an id, a start date, and and end date as parameters. It will return rows of data each corresponding to the day of the week that fall between the date range. The rows are all doubles. After returning it into a DataTable, I need to be able to use LINQ in VB.NET to return the maximum value. How can I achieve this? Here is the initial setup?
Currently, I am using a loop to find the row I want to update.
Public Sub pubsub_SetUserDGVColumnWidth(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewColumnEventArgs) ' update all user settings for the given column
I'm having trouble figuring out what to do with the bolded part, when there are no nodes to return.If there are no image tags inside the <images> tag, i get an "Object reference is not set to an instance of an object".I have been searching and searching for an answer but can't find one.
Dim orders = From o In xmlLinq.Descendants("order") Select New With { _ .orderID = o.Attribute("id").Value, _
I am trying to get the last entry from my database based off the date entered. The sql is not working exactly as I want it. Here is my sql SELECT TOP 1 * FROM BILLS_HITS ORDER BY DATETIMEADD DESC.Can anyone see anything wrong with it? The sql returns a record with the date - "6/6/2012 7:10:11 AM" and not one that is for 6/10/2012.
CREATE PROCEDURE [dbo].[TestProcedure] AS BEGIN SELECT TOP 1 CampaignID FROM Campaigns SELECT TOP 1 ServiceID FROM Services ORDER BY ServiceID desc END
In my .NET Project, I have a LINQ to SQL file (.dbml) and I have drag-and-dropped this procedure to create a new class TestProcedureResult:
Partial Public Class TestProcedureResult Private _CampaignID As Integer Public Sub New()
[Code]....
So it is not returning ServiceID. How can I retreive ServiceID using LINQ to SQL? I know we can customize stored procedure calls, but how can I customize in this particular scenario?
I am trying to return a binary from the DB using linq for display in the browser. The method below using ado.net works but I am trying to ypgrade to linq but the linq version returned the error.
Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Dim imageId As String = context.Request.QueryString("id") Dim ret As DataTable = Nothing ret = DPGetImageData.GetImageById(Convert.ToInt64(imageId)) For Each dt As DataRow In ret.Rows For Each c As DataColumn In ret.Columns [Code] .....
How to give another function's returned value in LINQ Ienumerable.
Private function GetFruitColor(fruit) as string 'It returns fruit color. 'If valid fruit and color not available, it returns ""(empty string)
[code].....
'Below code is wrong. but please suggest me how to correct it. My intention is, I want output collection(say dictionary) of each fruitname and its color(returned by other function call) for all the fruits which the GetFruitColor is not nothing(it can be empty or valid string).
Dim query = _ fruits.Where(Function(fruit) k= GetFruitColor(fruit) if not k is nothing select fruit, k) End Sub
Is this the most straight forward way to return a typed collection?Here's the key line of code which returns a implicit type of IEnumerable that used to manually loop through to manually recreated a TYPED collection. Is there any native LINQ way to return a typed sorted collection without this recreating of the collection? [code]
I am using LINQ to SQL queries to return data in my application. However I find it is now needful for me to return the column Names. Try as I might I have been completely unable to find out how to do this on the internet.
So if my LINQ entity table has the properties (Last_Name, First_name, Middle_Name) I need to return[code]...
I'm very new to linq and I'm trying to come up with a linq query against a dataset that will return a max count value based on grouping records.[code]...
Public Shared Function GetAllNotesByUser(ByVal UserID As Guid) As Account (??) Using db As New MyEntity Dim query= (From A In db.Account _
[Code].....
I would then like to pass this to another function to calculate the totals for all the accounts in the collection. Is it best practice to return an Ienumerable, a generic list, I'm just not sure what works best with LINQ and the entity framework.
I am having trouble following some of the examples at MSDN for LINQ.Basically I have a List Of MyObject. MyObject has a property called Value which is an integer.I want to group all the MyObjects together that share the same Value and then return that Value where the count of the group is greater than 5.I have tried the following,
dim foak = From o as MyObject in MyObjectList _ Group o By o.Value into Count _ WHERE Count > 5 _ Select o.Value
I have a stored procedure in DBML and I try to pass the result to "sqlQryArray" as an array(1 dimensional array). But the bottom code causes error like below message. What else should be done?
Error 1 Value of type '1-dimensional array of aaaDatabase.stp_GetSomethingResult' cannot be converted to '1-dimensional array of String' because 'aaaDatabase.stp_GetSomethingResult' is not derived from 'String'.
The return result from stored procedure is a just list of first names of students(only one column)
Dim sqlQry = aaaLINQ.stp_GetSomething(bbb,ccc,ddd) Dim sqlQryArray As String() = sqlQry.ToArray()