foreachループ内のDataTableに列を自動的に追加する方法があるかどうかを知りたいですか?それは私が "自動的に"意味するものです。明示的に各ループの前に、すべての列に名前を付けるよりも、ループ内のDataTableに列を追加する
DataTable dt = new DataTable();
foreach (var item in model.Statistik)
{
dt.Columns.Add();
row = dt.NewRow();
row[//Name of column goes here] = // either item or item.property;
dt.Rows.Add(row);
}
これは、はるかに効率的である:
私はこのような心の何かに持っていました。何らかのプロパティーが変更されたり削除されたりするとどうなりますか?したがって、これは私が取り除きたいものです。
Watさんは 'row [" ColumnName "] = value'を使用できないようにしますか?あなたは 'item'のプロパティを知らないのですか?どのようなタイプですか、あなたはそれを見せますか? –
私は私のViewModelのプロパティを知っていますが、私はそれを多く簡略化したいと思います。私は多くのプロパティで作業していると思うので、効率的ではありませんか?各プロパティのDisplayName属性を取得してループコードの列に追加して、ループ内の次の行に一致するようにしました。したがって、VMに文字列型のプロパティがある場合、カラムにアイテムの属性名が渡され、カラムに追加できます。なぜなら、アイテムのレコードと一致する列を追加する必要があるからです。 – kryman
これは私が考えたことです: dt.Columns.Add(prop。の属性名はここに入ります); 行= dt.NewRow(); 行[attr。小道具の名前。ここに行く] = // itemまたはitem.property; このように、ループの外側にある新しい列を指定する必要はなく、行の列の名前も指定する必要もありません。 – kryman