1

次のようなデータテーブルがあります

cname  tname  text        allowgroupping
A      M      good        Yes
A      M      bad         Yes
A      M      ugly        Yes
B      N      sick        No
B      N      lovely      No
C      R      pathatic    Yes

cname結果が次のようになるように、最初の列でデータテーブルをグループ化したい

cname  tname      text                 allowgroupping
    A      M      good,bad,ugly        Yes
    B      N      sick,lovely          No
    C      R      pathatic             Yes

各列をループして多くのチェックを行うことでそれを実行しましたが、LINQ を使用してそれを実行し、結果をデータテーブルに保存するにはどうすればよいですか?

4

2 に答える 2

1

次のようなことができます。

    var query = from row in dataTable.AsEnumerable()
                group row by row["cname"] into g
                select new {    cname = g.Key,
                                tname = g.First()["tname"] ,
                                text = String.Join(", ", g.Select(r=>r["text"].ToString()).ToArray()),
                                allowgrouping = g.First()["allowgroupping"]
                };

    foreach (var row in query)
    {
        resultDataTable.Rows.Add(row.cname, row.tname, row.text, row.allowgrouping);
    }
于 2013-07-25T21:36:55.490 に答える
1

アイデアは、テーブルを次のようにグループ化することです。

var groupedDB =
  from entry in dataTable
  group entry by entry.cName into entryGroup
  select new
  {
    cName = entryGroup.Key,
    tName = entryGroup.First().tName,
    text = String.Join(",", entryGroup.Select(_=>_.text)),
    allowGrouping = entryGroup.First().allowGrouping
  };

tNameもちろん、これを行うと、列と列について大胆な仮定を行っていることがわかりallowGroupingます。あなたが意図していることを確認してください。そうでない場合は、 だけでなく、3 つの列すべてでグループ化する必要がありますcName

于 2013-07-25T21:28:08.227 に答える