C# 如何使用LINQ查询数据表并向列表中添加值?

C# 如何使用LINQ查询数据表并向列表中添加值?,c#,linq,.net-4.0,linq-to-objects,C#,Linq,.net 4.0,Linq To Objects,示例类: public class ProductData { private Guid ProductID { get; set; } private string ProductDescription { get; set; } public ProductData(Guid pID, string pDescription) { this.ProductID = pID; this.ProductDescription =

示例类:

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();
    }
私有静态列表GetProductDataList()
{
//在此处填充数据集ds的代码
DataTable dtReport=ds.Tables[0];
List lstProductData=新列表();
int指数=1;
foreach(dtReport.Rows中的数据行)
{
添加(新的ProductData(新的Guid(行[“ProductID”].ToString()),行[“Product”].ToString());
索引++;
}
返回lstProductData.ToList();
}
代码工作得非常好,正如预期的那样。但是,我认为使用LINQ可以避免foreach循环。出于各种原因,我尽可能多地使用LINQ(看起来更干净的代码是原因之一-如果我错了,请纠正我)


是否有任何方法可以使用LINQ和最少的代码实现上述相同的功能。

这可以使用
选择
列表来实现:

var lstProductData = dtReport.Rows.Cast<DataRow>()
    .Select(row => new ProductData(new Guid(row["ProductID"].ToString())
        , row["Product"].ToString()))
    .ToList();
var lstProductData=dtReport.Rows.Cast()
.Select(行=>newproductdata(新Guid(行[“ProductID]”)。ToString())
,第[“产品”].ToString()行)
.ToList();

谢谢@Servy。向DataRow强制转换是否重要?@Learner没有它就无法编译,所以我认为是的。如果愿意,您也可以使用
dtReport.AsEnumerable()
。dtReport.AsEnumerable()与强制转换有何不同。你能解释一下这两个吗?@Learner不是,这就是为什么我说你可以用其中一个。