【问题标题】:MVC loop through array to find data of each location in a table and create a seperate table for eachMVC遍历数组以查找表中每个位置的数据,并为每个位置创建一个单独的表
【发布时间】:2020-03-10 18:09:22
【问题描述】:

如果每个“站点”位置的项目不为空,我希望能够遍历我的“站点”sql 表,以便在表中查找项目的所有成本

这是我当前的控制器方法

float[] osiItemCost;
float[] osiLoItemCost;
float[] osiItemLastCost;

List<Site> sites = db.Sites.ToList();
            foreach (Site s in sites)
            {
                foreach (OffSiteItemDetails d in s.ItemDetails)
                {

                    if (d.itemID != null)
                    {
                        osiItemCost[s.ID] = d.qty * db.Items.Where(x => x.ID == d.itemID).FirstOrDefault().cost(1, false, false);
                        osiLoItemCost[s.ID] += d.qty * db.Items.Where(x => x.ID == d.itemID).FirstOrDefault().cost(1, false, true);
                        osiItemLastCost[s.ID] += db.Items.Where(x => x.ID == d.itemID).FirstOrDefault().cost(d.qty, true, false);

                    }
                 }
             }

我希望它循环并获取每个站点的数据,然后将其分配到其各自的可变站点位置。例如:osiItemCost[s.ID] 但我不知道我是否走在正确的轨道上。

这样做的目的和最终目标是,我想为每个“站点”创建一个表格,以显示其适当的数据。这是一个很难用语言表达的问题,所以如果您需要更清楚的说明,请告诉我

【问题讨论】:

    标签: c# sql linq model-view-controller


    【解决方案1】:

    尝试在表格中创建一个表示您想要的数据的模型,例如:

    public class AppropriateSiteData{
        public int Id {get;set;}
        public int SiteId {get;set;}
        public float ItemCost {get;set}
        public float LoItemCost {get;set;}
        public float ItemCostLast {get;set;}    
    }
    

    然后创建一个模型列表,并在循环数据时添加到列表中:

    List<AppropriateSiteData> siteDataList = new List<AppropriateSiteData>();
    List<Site> sites = db.Sites.ToList();
    
            foreach (Site s in sites)
            {
                foreach (OffSiteItemDetails d in s.ItemDetails)
                {
    
                    if (d.itemID != null)
                    {
                       AppropriateSiteData toAdd = new AppropriateSiteData{
                               SiteId = s.Id,
                               ItemCost = d.qty * db.Items.Where(x => x.ID == 
                                          d.itemID).FirstOrDefault().cost(1, false, false),
                               LoItemCost = d.qty * db.Items.Where(x => x.ID == 
                                           d.itemID).FirstOrDefault().cost(1, false, true),
                               ItemCostLast =db.Items.Where(x => x.ID == 
                               d.itemID).FirstOrDefault().cost(d.qty, true, false)
                          };
                       siteDataList.Add(toAdd); 
    
                    }
                 }
             }
    

    然后 siteDataList 将包含您要查找的数据的列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      相关资源
      最近更新 更多