C# 3.0 将代码转换为lambda/LINQ(C#3.0)
如何将下面的代码转换为lambdaC# 3.0 将代码转换为lambda/LINQ(C#3.0),c#-3.0,C# 3.0,如何将下面的代码转换为lambda if (ds != null && ds.Tables.Count > 0) { dtAsset = ds.Tables["AssetData"]; dtCharecteristics = ds.Tables["CharacteristicsData"]; for (int i = 0; i < dtAsset.
if (ds != null && ds.Tables.Count > 0)
{
dtAsset = ds.Tables["AssetData"];
dtCharecteristics = ds.Tables["CharacteristicsData"];
for (int i = 0; i < dtAsset.Rows.Count; i++)
{
for (int j = 0; j < dtCharecteristics.Rows.Count; j++)
{
if (dtAsset.Rows[i]["AssetId"].Equals(dtCharecteristics.Rows[j]["AssetId"]))
{
objAttributesCollection.Add(new Attributes
{
AttributeCode = Convert.ToString(dtCharecteristics.Rows[j]["AttributeCode"]),
TimeSeriesData = fn(Convert.ToDateTime(dtCharecteristics.Rows[j]["StartDate"]), Convert.ToString(dtCharecteristics.Rows[j]["Value"]))
});
}
}
objAssetCollection.Add(new Asset
{
AssetId = Convert.ToInt32(dtAsset.Rows[i]["AssetId"]),
AssetType = Convert.ToString(dtAsset.Rows[i]["AssetCode"]),
AttributeCollection = objAttributesCollection
});
objAttributesCollection = new List<Attributes>();
}
}
if(ds!=null&&ds.Tables.Count>0)
{
dtAsset=ds.Tables[“AssetData”];
DTCharacteristics=ds.表格[“特征数据”];
对于(int i=0;i
我正在使用C#3.0
代码中没有错误,但为了学习,我想这样做
谢谢,我做到了
if (ds != null && ds.Tables.Count > 0)
{
dtAsset = ds.Tables["AssetData"];
dtCharecteristics = ds.Tables["CharacteristicsData"];
DataTableExtensions.AsEnumerable(dtAsset).ToList().ForEach(i =>
{
DataTableExtensions.AsEnumerable(dtCharecteristics)
.ToList().ForEach(j =>
{
if(i["AssetId"].Equals(j["AssetId"]))
{
objAttributesCollection.Add(new Attributes
{
AttributeCode = Convert.ToString(j["AttributeCode"]),
TimeSeriesData = fn(
Convert.ToDateTime(j["EndDate"]),
Convert.ToString(j["Value"])
)
});
}
});
objAssetCollection.Add(new Asset
{
AssetId = Convert.ToInt32(i["AssetId"]),
AssetType = Convert.ToString(i["AssetCode"]),
AttributeCollection = objAttributesCollection
});
objAttributesCollection = new List<Attributes>();
}
);
if(ds!=null&&ds.Tables.Count>0)
{
dtAsset=ds.Tables[“AssetData”];
DTCharacteristics=ds.表格[“特征数据”];
DataTableExtensions.AsEnumerable(dtAsset.ToList().ForEach(i=>
{
DataTableExtensions.AsEnumerable(数据特征特性)
.ToList().ForEach(j=>
{
如果(i[“AssetId”]等于(j[“AssetId”]))
{
添加(新属性
{
AttributeCode=Convert.ToString(j[“AttributeCode”]),
时间序列数据=fn(
Convert.ToDateTime(j[“EndDate”]),
Convert.ToString(j[“Value”])
)
});
}
});
objAssetCollection.Add(新资产
{
AssetId=Convert.ToInt32(i[“AssetId”]),
AssetType=Convert.ToString(i[“AssetCode”]),
AttributeCollection=对象属性集合
});
objattributecollection=新列表();
}
);
这里有一个建议:
不要使用
.ForEach
,而是使用中的,然后选择在循环中创建的项目。AsEnumerable是一种扩展方法。您不需要编写“DataTableExtensions.AsEnumerable(table)”-只需编写“table.AsEnumerable()”。