我有这段代码片段,它从数据集返回特定的记录。Linq结果到var不会填充值,除非手动刷新
DataTable tblr = new DataTable("itemsToValidate");
tblr.Columns.Add("Position", typeof(string));
tblr.Columns.Add("ItemCode", typeof(string));
tblr.Columns.Add("QtyOrdered", typeof(string));
tblr.Columns.Add("UOM", typeof(string));
tblr.Columns.Add("PriceQuoted", typeof(string));
tblr.Columns.Add("RequiredBy", typeof(string));
tblr.Columns.Add("ExpectedOnDock", typeof(string));
tblr.Columns.Add("BackOrdered", typeof(string));
var records = (from t1 in x12.InterchangeDataSet.Tables["PO1"].AsEnumerable()
join t2 in x12.InterchangeDataSet.Tables["DTM"].AsEnumerable() on t1.Field<Nullable<int>>("Loop_Id")
equals (t2.Field<Nullable<int>>("Loop_Id"))
select tblr.LoadDataRow(new object[]{
// Position, ItemCode, qtyOrdered, UOM, PriceQtd, RequiredBy, Net,status
t1.Field<string>("PO101"),t1.Field<string>("PO109"),t1.Field<string>("PO102"),t1.Field<string>("PO103"),t1.Field<string>("PO104"),t2.Field<string>("DTM02"),null,null },false)
);
IEnumerable<DataRow> x = records.Select(y=>y);
tblr.AcceptChanges();
DataSet ds = new DataSet();
ds.Tables.Add(tblr);
string ItemsXml = ds.GetXml();
除非我设置一个破发点后,立即“记录”并刷新结果来看,该表(tblr)没有得到填充。 如何在没有此干预的情况下填充tblr?
P.S:
下面是修改后的代码片段包括校正由Tim Schmelter建议,请注意,我用的不是的foreach迭代器附加SELECT COUNT语句。
DataTable tblr = new DataTable("itemsToValidate");
tblr.Columns.Add("Position", typeof(string));
tblr.Columns.Add("ItemCode", typeof(string));
tblr.Columns.Add("QtyOrdered", typeof(string));
tblr.Columns.Add("UOM", typeof(string));
tblr.Columns.Add("PriceQuoted", typeof(string));
tblr.Columns.Add("RequiredBy", typeof(string));
tblr.Columns.Add("ExpectedOnDock", typeof(string));
tblr.Columns.Add("BackOrdered", typeof(string));
var records = (from t1 in x12.InterchangeDataSet.Tables["PO1"].AsEnumerable()
join t2 in x12.InterchangeDataSet.Tables["DTM"].AsEnumerable() on t1.Field<int?>("Loop_Id")
equals (t2.Field<int?>("Loop_Id"))
select tblr.LoadDataRow(new object[]{
// Position, ItemCode, qtyOrdered, UOM, PriceQtd, RequiredBy, Net,status
t1.Field<string>("PO101"),t1.Field<string>("PO109"),t1.Field<string>("PO102"),t1.Field<string>("PO103"),t1.Field<string>("PO104"),t2.Field<string>("DTM02"),null,null },false)
);
var x = (from n in records select n).Count();