I have 2 code block to do same a work and have same target create some thing, but I don't know which block is the best (I mean LINQ or non-LINQ)?
First of all, can anyone tell me how to optimize on the code blocks? And the lastly, help me find the best style between LINQ and non-LINQ:
First block is:
if (tblone.Rows.Count > 0)
{
tblone.Rows.Cast<DataRow>().Where(x => (string)x["id"] == "true").ToList()
.ForEach(x => tbltwo.Rows.Cast<DataRow>().Where(y => y["category"] == x["cate"]).ToList().ForEach(
z =>
{
tblthree.Rows.Cast<DataRow>()
.ToList<DataRow>()
.ForEach(k => datatemp.Rows.Add(k["m"].ToString()));
tblfour.Rows.Cast<DataRow>()
.ToList<DataRow>()
.ForEach(k => datatemp.Rows.Add(k["m"].ToString()));
}));
}
Second block is:
if (tblone.Rows.Count > 0)
{
for (var idx = 0; idx < tblone.Rows.Count; idx++)
{
if (bool.Parse(tblone.Rows[idx]["subset"].ToString()))
{
for (var kdx = 0; kdx < tbltwo.Rows.Count; kdx++)
{
if (tbltwo.Rows[kdx]["category"].ToString() == tblone.Rows[idx]["cate"].ToString())
{
for (var zdx = 0; zdx < tblthree.Rows.Count; zdx++)
datatemp.Rows.Add(tblthree.Rows[zdx]["m"].ToString());
for (var zdx = 0; zdx < tblfour.Rows.Count; zdx++)
datatemp.Rows.Add(tblfour.Rows[zdx]["m"].ToString());
}
}
}
}
}
ForEach()
is not LINQ. – svick Aug 14 '14 at 11:04