0

私はオブジェクトを持っています:

public class DataItem
{

    public string Location
    {
        get;
        set;
    }

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

次のような結果を返すテーブルからの結果がいくつかあります。

Room1 John
Room1 Jim
Room1 Dawn
Room1 Bob
Room1 Katie

私が書いたLINQがいくつかあります:

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

これは私の結果をグループ化します...しかし、これを私のオブジェクト(DataItem)に入れたいと思います。いくつかの例を見てきましたが、何もうまくいきませんでした...何が欠けていますか?

4

5 に答える 5

3
  1. 場所を表す単一の値を持つ新しい匿名オブジェクトでグループ化しないでください。場所でグループ化するだけです

  2. 結果として新しい匿名オブジェクトを選択しないでください。関心のあるオブジェクトを選択してください

  3. 人物リスト取得時にグループから人物名を選択します。


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();
                };
于 2013-10-22T19:30:41.847 に答える
0

次のようなものかもしれません:

 select new DataItem
   {
     Location= groupby.Key,
     PersonList = groupby
   };

この場合、次のように宣言する必要があることに注意してくださいPersonListIEnumerable<string>

于 2013-10-22T19:29:50.840 に答える
0

select 句を変更します。キーとして 1 つの値のみを使用するため、匿名オブジェクトをグループ化キーとして使用する必要もありません。

var grouped = from table in sqlResults.AsEnumerable()
              group table by table["LOCATION"] into groupby
              select new DataItem
              {
                  Location = groupby.Key,
                  PersonList = groupby.ToList()
              };
于 2013-10-22T19:28:59.100 に答える