-1

C# でその場でテーブルを作成しています。このテーブルには、特定の列が含まれる場合と含まれない場合があります。生のテーブルからの個別の値で構成される行が必要です。(つまり、エージェント名、マネージャー名など)。

私が使う:

var DistinctTable = SourceTable.DefaultView.ToTable(true, "AName", "MName");

それはうまく動作しますが、私はこれが次のようなもので動作する必要があります

    string Groupby = "";

    if (AName != "")
    {
        Groupby = AName;
    }
    if (MName != "")
    {
        Groupby = Groupby + MName;
    }

var DistinctTable = SourceTable.DefaultView.ToTable(true, Groupby);

簡単にするためにこれを少し控えめにしていますが、前提はそこにあります。引用符を追加したり、コンマを追加したりするオプションを試しました。エラーを受け取るのが最善です。

テーブル (x) に列 '"AName","MName"' がありません

これは可能ですか?

4

2 に答える 2

0

DistinctTable が DataTable に (戻る?) 作成されているため、次のように実行できます。

if (DistinctTable.Columns.Contains("ColumnName"))
{
    //[logic]
}

追加するために編集:

DataTable DistinctTable = SourceTable.DefaultView.ToTable();
if (DistinctTable.Rows.Count > 0)
{
    if (!DistinctTable.Columns.Contains("ColumnA"))
    {
        DistinctTable.Columns.Add("ColumnA", typeof(String));
    }
    if (!DistinctTable.Columns.Contains("ColumnB"))
    {
        DistinctTable.Columns.Add("ColumnA", typeof(String));
    }
    if (!DistinctTable.Columns.Contains("ColumnC"))
    {
        DistinctTable.Columns.Add("ColumnC", typeof(String));
        //you can also move the new columns by using SetOrdinal, like so:
        DistinctTable.Columns[DistinctTable.Columns.Count - 1].SetOrdinal(DistinctTable.Columns.Count - 2);
        //but careful, this gets messy very quickly
    }
}
//return DistinctTable //(?)
于 2015-03-19T16:05:02.660 に答える
0

の 2 番目のパラメーターはDefaultView.ToTableparams string[]渡す配列を作成できるようにするためです。

List<string> groupBys = new List<string>();

if (AName != "")
{
    groupBys.Add(AName);
}
if (MName != "")
{
    groupBys.Add(MName);
}

var DistinctTable = SourceTable.DefaultView.ToTable(true, groupBys.ToArray());
于 2015-03-19T16:06:22.273 に答える