如何使用Linq根据条件从List of Class类中获取值 [英] How to get the values from List of Object class based on conditions using Linq

查看:82
本文介绍了如何使用Linq根据条件从List of Class类中获取值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我有类似下面的课程

Hi ,

I have a class like below

Class BatchDetails
{
Public int batchnum{get:set;}
Public int Boxnum{get:set;}
Public decimal batchamount{get:set;}
Public string depositdate{get:set;}
}





我创建了一个List< batchdeatils> listBatchDetails = new List< batchdeatils>并添加物品



所以现在我有以下物品



I ahave created a List<batchdeatils> listBatchDetails=new List<batchdeatils> and added items to it

So now i have items like below

listBatchDetails[0]= boxnum= 1
                     batchnum=1
                     batchamount=66.36
                     depositDate=20130806
listBatchDetails[1= boxnum= 1
                     batchnum=1
                     batchamount=6836
                     depositDate=20130806
listBatchDetails[2]=boxnum= 1
                     batchnum=2
                     batchamount=566.00
                     depositDate=20130806
listBatchDetails[3 bxnum= 2
                     batchnum=1
                     batchamount=566.00
                     depositDate=20130806

listBatchDetails[4boxnum= 2
                     batchnum=2
                     batchamount=5400
                     depositDate=20130806

listBatchDetails[5=boxnum= 2
                     batchnum=2
                     batchamount=566.00
                     depositDate=20130806







现在我想获得批量级总和盒装水平总计

这意味着box1我有两个差异批次,所以batchnum1total + batchnum1total + batchnum2total)

当涉及到盒子级别Box1(batchnum1total + batchnum2total)= boxtotalAmount







我在很多方面尝试但无法找到解决方案...... br />
请建议和它的高优点:( ..我是新的蜜蜂到.net



请帮助..谢谢提前




Now i wnat to get the batchlevel total and also box level total
which mean for box1 i have two diff batches so batchnum1total+batchnum1total+batchnum2total)
when it comes to the box level Box1(batchnum1total+batchnum2total) =boxtotalAmount



I have tried in many ways but unable to find the solution ....
Please suggest and its high proiority :(..I am new bee to the .net

Please help ..Thanks in advance

推荐答案

这应该有效。查看我的LinqTest类底部的方法



This should work. See the methods at bottom of my LinqTest class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test_Client
{
    internal class LinqTest
    {
        class BatchDetails
        {
            public int batchnum { get; set; }
            public int boxnum { get; set; }
            public decimal batchamount { get; set; }
            public string depositdate { get; set; }
        }

       List<batchdetails> listBatchDetails = new List<batchdetails>();

       public LinqTest()
       {
           //load data
           listBatchDetails.Add(new BatchDetails()
           {
               boxnum = 1,
               batchnum = 1,
               batchamount = 66.36M,
               depositdate = "20130806"
           });

           listBatchDetails.Add(new BatchDetails()
           {
               boxnum = 1,
               batchnum = 1,
               batchamount = 6836M,
               depositdate = "20130806"
           });

           listBatchDetails.Add(new BatchDetails()
           {
               boxnum = 1,
               batchnum = 2,
               batchamount = 566.00M,
               depositdate = "20130806"
           });

           listBatchDetails.Add(new BatchDetails()
           {
               boxnum = 2,
               batchnum = 1,
               batchamount = 566.00M,
               depositdate = "20130806"
           });

           listBatchDetails.Add(new BatchDetails()
           {
               boxnum = 2,
               batchnum = 2,
               batchamount = 5400M,
               depositdate = "20130806"
           });

           listBatchDetails.Add(new BatchDetails()
           {
               boxnum = 2,
               batchnum = 2,
               batchamount = 566.00M,
               depositdate = "20130806"
           });

       }

        public decimal GetBatchTotals(int batchid)
        {
            return listBatchDetails.Where(batch => batch.batchnum == batchid).Sum(batch => batch.batchamount);
        }

        public decimal GetBoxTotals(int boxid)
        {
            return listBatchDetails.Where(box => box.boxnum == boxid).Sum(batch => batch.batchamount);
        }

    }
}
//EDIT: Removing xml not sure how this ended up in my answer???</batchdetails></batchdetails>


这篇关于如何使用Linq根据条件从List of Class类中获取值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆