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不是,这就是为什么我说你可以用其中一个。