The following
LINQ
query with
Method (Fluent) syntax
can be used to achieve the above result
IEnumerable<dataset1.dtplaninforow> planInfos = DataSetInstance.dtStages.AsEnumerable()
.Where(st =>
DataSetInstance.dtChapter.Any(ch => ch.Chapter==st.Chapter) &&
DataSetInstance.dtMileStones.Any(ms => ms.MilestoneDesc==st.MilestoneDesc))
.Select(st => {
var dr = DataSetInstance.dtPlanInfo.NewdtPlanInfoRow();
dr.Chapter = st.Chapter;
dr[string.Format("{0}Plan", st.MilestoneDesc)] = st.PlanDate;
dr[string.Format("{0}Actual", st.MilestoneDesc)] = st.ActualDate;
dr[string.Format("{0}Remark", st.MilestoneDesc)] = st.Remarks;
dr[string.Format("{0}RevisedCount", st.MilestoneDesc)] = st.revisedCount;
dr[string.Format("{0}LastRevised", st.MilestoneDesc)] = st.LastTimeRevised;
return dr;
});
planInfos.CopyToDataTable(DataSetInstance.dtPlanInfo, LoadOption.PreserveChanges);
It is somewhat difficult to get the above result using the
LINQ query expression syntax
in setting the values in new row of
PlanInfo
table.