RotAngle = atan2 (y2-y1, x2-x1)
上面的类包含GRN头类和Detail类的一些属性。 i Grn可以包含许多项目,因此“List GRNDetails”可以保留它们。
我从一个存储在变量GrnList
中的方法中获取GRN Listpublic class GRNMaster
{
public string ID { get; set; }
public string GRNNo { get; set; }
public List<GRNDetails> GRNDetails { get; set; }
}
public class GRNDetails
{
public string GRNID { get; set; }
public string ItemID { get; set; }
public string ItemType { get; set; }
public int RecevedQty { get; set; }
}
我有一个项目ID列表
public List<GRNMaster> GrnList
在控制器中我想循环ItemIDList(List ItemIDList)并根据List获取该特定项目的总和
public List<string> ItemIDList
答案 0 :(得分:5)
使用LINQ
var totalQty = 0;
foreach (var item in ItemIDList)
{
var sumOfCurrentItem = GrnList.SelectMany(s => s.GRNDetails
.Where(f => f.ItemID == item)).Select(f => f.RecevedQty).Sum();
totalQty += sumOfCurrentItem ;
}
甚至可以替换foreach
循环( Credit转到ReSharper:))
int totalQty = ItemIDList.Sum(item => GrnList
.SelectMany(s => s.GRNDetails.Where(f => f.ItemID == item))
.Select(f => f.RecevedQty).Sum());
答案 1 :(得分:0)
如果我已正确理解您的要求,那么这就是您所需要的:
IEnumerable<int> query =
from grn in GrnList
from grnDetail in grn.GRNDetails
join itemID in ItemIDList on grnDetail.ItemID equals itemID
select grnDetail.RecevedQty;
int ItemQty = query.Sum();