简体   繁体   English

如何在MVC应用程序的网格视图中使用LINQ语句显示总和

[英]How to show sum using LINQ statement in Grid view of the MVC app

I developing the MVC application. 我正在开发MVC应用程序。

I am stuck in LINQ Syntax. 我陷入了LINQ语法中。

I wan to show the sum of List Items in index view of parent. 我希望在父级的索引视图中显示列表项的总和。 Please check code below. 请检查下面的代码。

In Model I have two classes. 在模型中,我有两个类。

   public class StockAdjustment
            {
                public int Id { get; set; }
                public List<StockAdjustmentItem> StockAdjustmentItems { get; set; }     
                 public int SumOfStockAdjustmentItemQuantity
                {
                get 
           { 
                if (this.StockAdjustmentItems != null)
                {
                return this.StockAdjustmentItems.Sum(s=>s.OriginalQuantity);
                     }
             return 0;
            }
        }
            }

            public class StockAdjustmentItem
            {
                public int Id { get; set; }
                public int OriginalQuantity { get; set; }
                public StockAdjustment StockAdjustment { get; set; }
            }



          public StockAdjustment GetAll(int Id)
            {


                oStockAdjustment = GetStockAdjustmentById(Id);

                var prepo = new ProductRepo();

                oStockAdjustment.StockAdjustmentItems = new List<StockAdjustmentItem>();


                StockAdjustmentItem ai1 = new StockAdjustmentItem();
                ai1.Id = 1 ;
                ai1.OriginalQuantity = 250;
               oStockAdjustment.StockAdjustmentItems.Add(ai1);



                StockAdjustmentItem ai2 = new StockAdjustmentItem();
                ai2.Id = 1;
                ai2.OriginalQuantity = 375;
               oStockAdjustment.StockAdjustmentItems.Add(ai2);

                return oStockAdjustment;

            }

Now I have controller Code 现在我有控制器代码

 public ActionResult Index(string searchContent = "")
        {
            AdjustmentRepo oAdjustmentRepo = new AdjustmentRepo();

            var adjustments = from adjustment in oAdjustmentRepo.GetAll() select adjustment;


            ViewBag.StockAdjustmentList = adjustments;
            return View(adjustments);
        }

This Working perfectly fine... 这个工作很好...

Now, the problem comes when, I am trying to show StockAdjustment in List. 现在,问题来了,当我尝试在List中显示StockAdjustment时。

I have to show the sum of the OriginalQuantites of StockAdjustmentItems in the Front of StockAdjustment item in grid. 我必须在网格的StockAdjustment项的前面显示StockAdjustmentItems的OriginalQuantites的总和。

in above Exmaple I want to show 650(250 + 375) in the row of a gird. 在上面的Exmaple中,我想在网格的行中显示650(250 + 375)。

  @model IEnumerable<StockWatchServices.DomainClass.StockAdjustment>

      @Html.Grid(Model).Columns(columns => 
        {            
     columns.Add(c=>c.StockAdjustmentItems.Sum( OriginalQuantity ???? Im stuck here... ) 
        }

What should I write here ? 我应该在这里写些什么?

I can see like this... 我可以看到这样的... 在此处输入图片说明

Create a getter only property on the StockAdjustment class StockAdjustment类上创建仅吸气剂属性

public class StockAdjustment
{
 public int Id { get; set; }
 public List<StockAdjustmentItem> StockAdjustmentItems { get; set; } 
 public int SumOfStockAdjustmentItemQuantity
 {
  get 
  { 
   if (this.StockAdjustmentItems != null)
   {
    return this.StockAdjustmentItems.Sum(s=>s.OriginalQuantity);
   }
   return 0;
 }
}

} }

And then in your Razor view: 然后在您的Razor视图中:

@Html.Grid(Model).Columns(columns => 
{            
 columns.Add(c => c.SumOfStockAdjustmentItemQuantity) 
}

Can you try with below code : 您可以尝试以下代码:

@Html.Grid(Model).Columns(columns =>
{
    columns.Add(c => c.StockAdjustmentItems.Where(quantity => quantity.OriginalQuantity != null).Sum(sum => sum.OriginalQuantity).ToString());
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM