样本类:
public class ProductData
{
private Guid ProductID { get; set; }
private string ProductDescription { get; set; }
public ProductData(Guid pID, string pDescription)
{
this.ProductID = pID;
this.ProductDescription = pDescription;
}
}
创建ProductData列表:
private static List<ProductData> GetProductDataList()
{
// code to populate DataSet ds here
DataTable dtReport = ds.Tables[0];
List<AssetData> lstProductData = new List<ProductData>();
int index = 1;
foreach (DataRow row in dtReport.Rows)
{
lstProductData.Add(new ProductData(new Guid(row["ProductID"].ToString()), row["Product"].ToString()));
index++;
}
return lstProductData.ToList();
}
代码完全正常并且符合预期。但是,我认为使用LINQ可以避免 foreach循环。我出于各种原因尝试尽可能多地使用LINQ(看起来更干净的代码是其中一个原因 - 如果我错了,请纠正我。)
有没有什么方法可以使用LINQ和最少的代码实现与上面相同的功能。
答案 0 :(得分:3)
可以使用Select
和ToList
:
var lstProductData = dtReport.Rows.Cast<DataRow>()
.Select(row => new ProductData(new Guid(row["ProductID"].ToString())
, row["Product"].ToString()))
.ToList();