1

サンプル クラス:

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 を利用するようにしています (コードの見た目がすっきりしていることが理由の 1 つです。間違っている場合は修正してください)。

LINQ を使用して最小限のコードで上記と同じことを達成する方法はありますか。

4

1 に答える 1

3

Selectこれは、 と を使用して実行できますToList

var lstProductData = dtReport.Rows.Cast<DataRow>()
    .Select(row => new ProductData(new Guid(row["ProductID"].ToString())
        , row["Product"].ToString()))
    .ToList();
于 2013-08-14T20:29:36.053 に答える