如何使用Linq根据条件从List of Class类中获取值 [英] How to get the values from List of Object class based on conditions using Linq
问题描述
我有类似下面的课程
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屋!