嗨,我在使用LINQ加入两个DataTable时遇到问题.表有这样的列:
table1 table2
ID, name ID, stock
1, item1 1, 100
2, item2 3, 50
3, item3
Run Code Online (Sandbox Code Playgroud)
我用linq这样加入:
DataTable dtResult = new DataTable();
dtResult.Columns.Add("ID", typeof(string));
dtResult.Columns.Add("name", typeof(string));
dtResult.Columns.Add("stock", typeof(int));
var result = from dataRows1 in table1.AsEnumerable()
join dataRows2 in table2.AsEnumerable()
on dataRows1.Field<string>("ID") equals dataRows2.Field<string>("ID")
select dtResult.LoadDataRow(new object[]
{
dataRows1.Field<string>("ID"),
dataRows1.Field<string>("name"),
dataRows2.Field<int>("stock"),
}, false);
result.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
问题是,结果只显示表2中的ID.
dtResult
ID, name, stock
1, item1, 100
3, item3, 50
Run Code Online (Sandbox Code Playgroud)
我还要展示丢失的物品.这是想要的结果:
dtResult
ID, name, stock
1, item1, 100
2, item2, 0 //Prefer if it is …
Run Code Online (Sandbox Code Playgroud) 我DataTable
在我的应用程序中使用了一些计算.我需要通过除第一行之外的所有行进行迭代.可能吗?
就像是:
DataTable dt;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
//do something...
}
Run Code Online (Sandbox Code Playgroud) 是否可以将文本添加到RowHeader的ColumnHeader中.我把自动增量放入我的DataGridView的Rowheaders中,我想把"不" 在那上面.
就像是:
//Autoincrement RowHeaders
foreach (DataGridViewRow row in myDGV.Rows)
{
row.HeaderCell.Value = String.Format("{0}", row.Index + 1);
}
No. | myColumn 1 | myColumn 2
1 | myText | myText
2 | myText | myText
//the "No." column are actually RowHeaders
Run Code Online (Sandbox Code Playgroud)