Как организовать datatable с помощью С#

100
9

Я строю динамически динамически, и формат похож на следующий,

DataTable dt = new DataTable();
DataColumn dc;

dc = new DataColumn();
dc.ColumnName = "Question";
dt.Columns.Add(dc);

dc = new DataColumn();
dc.ColumnName = "User1";
dt.Columns.Add(dc);

dc = new DataColumn();
dc.ColumnName = "User2";
dt.Columns.Add(dc);

dr["Question"] = "2D";
dr["User1"] = "1";
dr["Question"] = "3D";
dr["User1"] = "4";
dr["Question"] = "2D";
dr["User2"] = "2";
dr["Question"] = "3D";
dr["User2"] = "5";

Как я могу устроить это, как следовать,

DataTable dt = new DataTable();
DataColumn dc;

dc = new DataColumn();
dc.ColumnName = "Question";
dt.Columns.Add(dc);

dc = new DataColumn();
dc.ColumnName = "User1";
dt.Columns.Add(dc);

dc = new DataColumn();
dc.ColumnName = "User2";
dt.Columns.Add(dc);

dr["Question"] = "2D";
dr["User1"] = "1";
dr["User2"] = "2";
dr["Question"] = "3D";
dr["User1"] = "4";
dr["User2"] = "5";

спросил(а) 2021-01-19T13:49:57+03:00 6 месяцев назад
1
Решение
63

Предположим, что dr - это переменная типа DataRow, получившая вызов метода DataTable NewRow, тогда вы можете добавить значения к свойству ItemArray только в одной строке.
Конечно, вы должны быть абсолютно уверены в порядках и типе столбцов


    DataRow dr = dt.NewRow();
dr.ItemArray = new object[] {"Q1", "1", "2"};
dt.Rows.Add(dr);

dr = dt.NewRow();
dr.ItemArray = new object[] {"Q2", "3", "4"};
dt.Rows.Add(dr);

ответил(а) 2021-01-19T13:49:57+03:00 6 месяцев назад
63

Вы можете использовать код, подобный этому;

DataRow dr = dt.NewRow();
dr["Question"] = "2D";
dr["User1"] = "1";
dr["User2"] = "2";

dr = dt.NewRow();
dr["Question"] = "3D";
dr["User1"] = "4";
dr["User2"] = "5";

ответил(а) 2021-01-19T13:49:57+03:00 6 месяцев назад
63

Вы можете сделать перекрестное соединение linq и отфильтровать его в списке (вы можете связать список с вашим msChart)

var result = (from dr1 in dt.Select()
join dr2 in dt.Select() on dr1["Question"].ToString() equals dr2["Question"].ToString()
select new { q = dr1["question"], u1 = dr1["User1"], u2 = dr2["User2"] }
).Where(row => row.u1.ToString().Length > 0 && row.u2.ToString().Length > 0).ToList();

ответил(а) 2021-01-19T13:49:57+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема