小编use*_*533的帖子

LINQ加入两个DataTables

嗨,我在使用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)

c# linq join winforms

23
推荐指数
1
解决办法
8万
查看次数

DataTable - foreach Row,EXCEPT FIRST ONE

DataTable在我的应用程序中使用了一些计算.我需要通过除第一行之外的所有行进行迭代.可能吗?

就像是:

DataTable dt;

foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
    //do something...
}
Run Code Online (Sandbox Code Playgroud)

.net c# iteration datatable datarow

9
推荐指数
2
解决办法
3万
查看次数

DataGridView将文本放在RowHeader的ColumnHeader中

是否可以将文本添加到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)

c# datagridview columnheader rowheader

8
推荐指数
1
解决办法
4090
查看次数