如何使用LINQ查询数据表并向List添加值?

时间:2013-08-14 20:28:00

标签: 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 = 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和最少的代码实现与上面相同的功能。

1 个答案:

答案 0 :(得分:3)

可以使用SelectToList

来完成
var lstProductData = dtReport.Rows.Cast<DataRow>()
    .Select(row => new ProductData(new Guid(row["ProductID"].ToString())
        , row["Product"].ToString()))
    .ToList();