从列表中访问一列以在另一个查询中使用

时间:2017-07-19 15:55:09

标签: c# linq

我试图从我的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)

2 个答案:

答案 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?
 }