C# – create object from LINQ

clinq

I have an object:

public class DataItem
{

    public string Location
    {
        get;
        set;
    }

    public List<string> PersonList
    {
        get;
        set;
    }
}

I have some results from a table that return something like:

Room1 John
Room1 Jim
Room1 Dawn
Room1 Bob
Room1 Katie

I have some LINQ that I've written:

var grouped = from table in sqlResults.AsEnumerable()
              group table by new { placeCol = table["LOCATION"] } into groupby
              select new
              {
                  Value = groupby.Key,
                  ColumnValues = groupby
              };

Which groups my results… But I'd like to put this into my object (DataItem). I've seen a couple of examples but nothing has worked… What am I missing?

Best Answer

  1. Don't group on a new anonymous object with a single value representing your location, just group on the location

  2. Don't select a new anonymous object as the result, select the object you care about

  3. Select out the person name from the group when getting the person list.


var grouped = from row in sqlResults.AsEnumerable()
                group row by row.Field<string>("LOCATION") into groupby
                select new DataItem()
                {
                    Location = groupby.Key,
                    PersonList = groupby.Select(row => 
                        row.Field<string>("Person")).ToList();
                };