我试图从我的linq查询中获取一个列并将其放入另一个列表可能不是正确的方法,所以请原谅我,如果我的代码不是 好。想要了解更多关于linq的信息。
List<StockM> _stockm = new List<StockM>();
List<priceLists> _priceList = new List<priceLists>();
stockm = _db.getStockBySupplierCode(_supplierCode);
foreach (var stockitem in _stockm)
{
_priceList = _db.getPriceTypesByProductCode(stockitem.product, "LPS");
stockitem.lpePrice = Convert.ToDecimal(_priceList.Select(s => s.lpsPrice));
}
我认为探究问题在于我如何尝试选择此处的列
_priceList.Select(s => s.lpsPrice)
答案 0 :(得分:0)
尝试使用FirstorDefault()
,因为您的_priceList
是一个列表,并且您将其分配给值
_priceList.Select(s => s.lpsPrice).FirstOrDefault();
此外,您是否需要在哪里找到匹配的特定值?只是好奇
答案 1 :(得分:0)
您的代码中存在一些问题。
首先,我建议您阅读.NET convention。例如,局部变量中没有前导_
,属性必须以大写字母开头。
然后,如果要将另一个实例分配给您的变量,则不需要实例化默认实例。您可以直接指定它:
List<StockM> _stockm = _db.getStockBySupplierCode(_supplierCode);
最后,您正在使用的Select
扩展方法已经开始了:
var result = _priceList.Select(s => s.lpsPrice);
基本上(不完全是,但这是一个像这样解释它的开头),同样如下:
var result = new List<decimal>();
foreach(var priceList in _priceList)
{
result.Add(priceList.lpsPrice);
}
话虽这么说,你可以像这样改进你的代码:
List<StockM> stockm = _db.getStockBySupplierCode(_supplierCode);
foreach (var stockitem in stockm)
{
List<priceLists> _priceList = _db.getPriceTypesByProductCode(stockitem.product, "LPS");
stockitem.lpePrice = ??? // you cannot use the Select here as it returns a collection of item. What do you really want to achieve?
}