1

私はそのように設計されたデータテーブル(グループ)を持っています

  • 列 A|列 B
  • X|アップル
  • Y|パープル
  • X|アップル
  • X|マンゴー

    私は基本的に X である columna から選択し、ColumnB から disinct を取得したい

    これは私が持っているものです

     var names = (from DataRow dr in Groups.Rows
                     orderby (string)dr["ColumnB"]
                     select (string)dr["ColumnB"]).Distinct();
    

    これは私に明確になりますが、それは私に紫を与えます、そして私は紫が欲しくありません.

    ありがとう!

  • 4

    3 に答える 3

    8
    var names = (from DataRow dr in Groups.Rows
                     where dr["ColumnA"] == "X"
                     orderby (string)dr["ColumnB"]
                     select (string)dr["ColumnB"]).Distinct();
    
    于 2013-06-03T14:37:04.993 に答える
    3
    DataTable dt2 = dt1.Select("ColumnA = 'X'").CopyToDataTable().DefaultView.ToTable(true, "ColumnB");
    

    したがって、ここでは、必要なデータの行のみ、つまり、columnA が X である行のみを選択しています。次に、columnB のみを表示することを選択しますが、一意の値のみを選択します。この順序で実行すると、別のデータテーブルが表示されます。1 つの列、columnB のみが含まれ、一意/個別の値のみが含まれます。

    楽しみ。

    于 2014-08-26T18:52:37.403 に答える
    -1

    戻り値に複数の値があり、値の 1 つだけでセット全体を区別したい場合は、カスタムIEqualityComparerを使用する必要があります。

    var names = (from DataRow dr in Groups.Rows
                 where (string)dr["ColumnA"] == "X"
                 orderby (string)dr["ColumnB"]
                 select new { 
                    ColumnA = (string)dr["ColumnA"], 
                    ColumnB = (string)dr["ColumnB"]
                }).Distinct(new MyCustomEqualityComparer());
    

    編集: where句を含める

    edit2:カスタム IEqualityComparer に変更

    于 2013-06-03T14:35:11.280 に答える