C# 3.0 将代码转换为lambda/LINQ(C#3.0)

C# 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.

如何将下面的代码转换为lambda

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()”。