C# - Getting The Values From A Grouped Row Using LINQ?
Dec 17, 2010
I have the following class:
public class MySeat
{
public string Section { get; set; }
public string Row { get; set; }
public string Seat {get; set; }
}
I want to group a list of seats by the Section and Row so that I can make a comma seperated list of the seats.
var groupedSeats = seats.GroupBy(x => new { x.Section, x.Row });
foreach (var group in groupedSeats)
{
htmlWriter.Write(group.Key.Section);
List<string> seatNumbers = new List<string>();
foreach (var seat in group)
seatNumbers.Add(seat.Seat);
htmlWriter.Write(string.Join(@", ", seatNumbers.ToArray()));
}
Is there a better way to do this with LINQ? This is just a small portion of the code I'm trying to clean up, I'm curious if there is a better way to grab the seat numbers for display rather than creating a list, looping through the groups and then doing a string.Join on it.
Prior to using a ViewModel, I could easily pass the "soon to be edited" object directly to the view without needing to fuss over setting individual properties etc as the View conveniently accepted the Employee type directly..
[HttpGet] public ActionResult EditEmployee(int? id) { EmployeeRepository ER = new EmployeeRepository(); Employee SomeEmployee = ER.GetEmployee(id.Value); if(SomeEmployee!=null) return View(SomeEmployee);
But now I'm using a ViewModel with DataAnnotations attributes applied over the top of various properties for validation purposes. Which creates a problem.. After fetching the "soon to be edited" object from the db, setting the ViewModel's values is suddenly a whole lot more complicated. I can't simply pass the retrieved object straight to the view, as the View now expects the VMEmployee type instead. I would like to be able to do something like:
[HttpGet] public ActionResult EditEmployee(int? id) { EmployeeRepository ER = new EmployeeRepository(); Employee SomeEmployee = ER.GetEmployee(id.Value); if(SomeEmployee!=null) return View(new VMEmployee(SomeEmployee));
All paths seem to lead to a huge constructor which manually sets the values of each individual property. But I never had to do that before when I wasn't using a ViewModel. Model binding was a blessing! My objects also have complex child objects, which my form is also collecting values for, so this would be a huge/verbose task against DRY principals. I don't even really want to use a ViewModel, but am forced to because I need two different DataAnnotations rule sets for different validation scenarios applied to the same object.
All I want to do is be able to have two different DataAnnotations rule sets for different scenarios. I.e. public-facing www site vs internal-facing admin site. DataAnnotations doesn't seem to be flexible enough to easily cater for this common need. I've tried AutoMapper, but it throws an error saying it can't map my object types, I suspect because Employee was auto-generated by LINQ to SQL. What is the most elegant way to achieve this while sticking to DRY principals?
I've got a LINQ to SQL object, and I want to group the selected data and then pass it into a view. What's the correct way of doing this? I'm sure I need to group the data when I select it rather than grouping it in the view, as this will result in about 200 rather 50000 rows I need to pass into my view. Are there any good examples of this online that anyone has seen?
Here Group# and item# are checkboxes. Does anyone know how to do this in asp.net. I am getting data from DataSet. One limitation is that I am not allowed to use third party tool/controls or jQuery.
I need to create a grouped checklistbox dynamically from the database, I was able to do it using an TreeView Control, But I need to move it to a Checklistbox. Below is the logic in VB.NET for the TreeView
I have a number of products in a SQL2005 DB. I have the Stored Procedure set-up to return the info as grouped rows containing 'manufacturer, model, quantitiy'.
I need to then display this content on a c# Asp.Net 4 web form grouped by manufacturer with the manufacturer as the group header. The whole data should be displayed over a 3 column layout.
So, Ive used a Datalist as this allows for the number of columns to be stipulated.
However, I can't work out an effective way to show the various products groupd by manufacturer, eg as shown below;
I've got a DNN application using Telerik RadGrid. We're exporting some data from the Grid but when we drill down on the grid control and export the data we only see the initial top level data, never the updated Grid. Here's my table tag and supporting code. I'm not an expert in ASPX/C#so please forgive my newbie-ness.
I want to add 2 radio buttons in a gridview for 2 columns. In that I have to select any row in each column... How to implement this... Actually I ve added gridview and radiobuttons but the thing is I couldn't select 2 columns in a single row ,it wont allow to select 2 radiobuttons at a time...Â
I am writing a form which has a set of options (radio buttons), and under each option, there is another set of options. For example:
- Session 1 - New Book A - Used Book A - Session 2 - New Book B - Used Book B
I've tried using HTML <input type="radio", and <asp:RadioButton, but even though I assign the "name" attribute correctly, the buttons are not mutually exclusive -- i.e., you can click both within each group. I see in "View Source" that the name and ID are altered, and therefore become ungrouped by the ASP.NET processing. I've tried using <asp:RadioButtonList, and this works functionally, but the items are not grouped properly. They appear like this:
- Session 1 - Session 2 - New Book A - Used Book A - New Book B - Used Book B
Got some records in a sql table. What i would like to do is display all the records on a webpage and group them by state, so that the display would look something like:
California Entry 1 Entry 2 Entry 3 New York Entry 1 Entry 2 Entry 3
Other (for entries with no state)
Entry 1 Entry 2
What would be the best method to do this? And I'm open to using anything up to and including .net 4.0/vs2010
I have a database that is filled with documents. In the database there is the documents id, name and version. Two documents can have the same name and id but are seperated by different versions.For instance there can be two entries, id: A44, name: Dilbert was here. But they are version A and B.When retrieving these to a listview I wish to limit the documents shown to only one version. Doing so means that I am only to show one document with the same id. I only get the id and name to show in the listview so I thought that distinct might do the trick. But since the name can change throughout different versions this was no good.Basically I wish to retrieve all documents but with distinct id. How do I achieve this?
I'm building a music voting application, similar to stack overflow almost.I have 3 tables, Charts, ChartItems, Votes.I'm trying to bring back a list of chartitems, which link to a single chart, with the number of votes for each chart item counted.This is what I am trying currently
var firstList = from chartItem in db.ChartItems join vote in db.Votes on chartItem.ixChartId equals vote.ixChartId into j1 where chartItem.ixChartId == id[code]...
The problem is once I have performed the grouping, I can't get any of the other properties I need from the join to populate the model. For example each ChartItem should have a title, id etc...I have created a ViewModel to hold all the properties that I need, called ChartItemWithVotes(includes all entity values + int totalVotes)In the end I am looking for this
I have a datatable which has been dynamically generated from FoxPro tables using a UNION Select statement. e.g.
SELECT * FROM x UNION SELECT * FROM y UNION SELECT * FROM Z ORDER By v_alue1
This produces a datatable with about 100 rows, each containing many fields, one of which is c_olor. From this datatable, I would like to select the distinct colors and then output in a dropdown.
I have a public class Color which just has one property which I can then use as the DataTextField and DataValueField for the dropdownlist
[code]...
However this never results in the distinct colors.
I have searched and searched for what I am looking for, and this seems to be one of the methods to produce a distinct set of results, but this and the others do not work.
My reasoning behind getting the colors this way, is that I need to get various other distinct values from the same UNION SELECT datasource, so would just do one DB call, cache the results, and then just used this cached datasource to retrieve all my distinct values.
I have a table in the database for users with the columns FirstName, LastName, DateUpdated, UserUpdated. Now, I display the fields FirstName and LastName but the last to fields are just for internal record keeping. I don't want the user to see or be able to edit them. However, I do want the DateUpdated and UserUpdated field to be populated upon every insert and update. The user id is in the session and I just take the current date for the DateUpdated field.
My question is: How can I write the UserUpdated and DateUpdated fields without the user providing any values?I had a couple of ideas:
- Modify the DataContext class to automatically compute the values. Don't know if that's a good idea. Also, my changes will be overwritten when I re-generate the DataContext class.
- Create hidden fields that hold these vlaues. For instance: <asp:HiddenField ID="user_createdHiddenField" Value='<%# Eval("UserUpdated") %>' runat="server" />. But how do I actually assign a value to the field?
I am running a LINQ query which populates a list used by a DropDownList, I need to insert an "Unassigned" value to the list. The function below queries the values correctly from the db but does not insert the "Unaasinged" value to the list.
I have a small issue binding the values into a dropdown using LINQ in ASP.NET code-behind.
var clientquer = from i in Entity.New_Bank select i; //var q = (from s in names // select s).Distinct(); // var getlendername = (from db in mortgageentity.New_Lender group db by db.Bank_Name into t select t.Key).ToList(); if (clientquer.Count() > 0) { ddlbankname.DataSource = clientquer.ToList(); ddlbankname.DataValueField = "Bank_ID2"; ddlbankname.DataTextField = "Bank_Name"; ddlbankname.DataBind(); }
It is binding with duplicate values, but I don't want bind duplicate values. I'm trying to solve this by using a group by clause, but it is not working.
I have what is turning out to be a rather complicated issue - at least for me.
I have a table with TeamID, TeamName, TotalTeamSize, ArrivalDate adn DepartureDate.
I need to create a source for a bar chart that will show the number of people deployed each month. It can be assumed that the entire team is dployed for each of the days between the ArrivalDate and the DepartureDate. Sometimes the ArrivalDate/DepartureDate spans two months (very rarely more) and sometimes it does not.
Here is what I have so far. In this setup phase, I thought I'd get the code working for one team (using a DropDownList) and then cycle through the entire table in order to get the full dataset for the bar chart.
I can't find the answer to this easy question, because I don't know the terminology I am looking to use. I have 2 tables, one that is a Users Table, and another (UserProfiles) that extends the Users table to include more info, like Age, Sex, Weight, etc.I am using the Entity Framework as my model, and the UserProfiles inherits from the Users table on a 1:1 basis.
All I need to do is the learn the syntax, that allows LINQ to Entities to query only some of the data from UserProfiles. For example, maybe I only need Sex and Weight, but not Age.
I have the value of Tags for the current document and have run a query to select all other documents that have either of the Tags in there row. for example lets say the current document Tags are (Tag1, Tag2, Tag3)
so from the example rows above all the rows above are returned apart from row[4] Here is the bit i'm lost with, i now want to sort the datatable by how many tags are matched with the current document. so for the example i've talked about so far they should be ordered
I'm creating a webservice to return a number of items from a database. At the moment I'm returning a DataSet of my results in the file.This is working ok but I have noticed my results are grouped as "NewDataSet".Is there a way I can customise the format of the XML returned.