c#列表查找重复更新多个列表
我有3个列表c#列表查找重复更新多个列表,c#,asp.net,list,C#,Asp.net,List,我有3个列表lstickettype,lstQuantitylstAmount。我正在尝试合并票证类型并相应地更新其他两个列表 数据如下: lstTicketType | lstQuantity | lstAmount --------------------------------------- Standard | 1 | 8:5 Standard | 1 | 8.5 Student | 1
lstickettype
,lstQuantity
lstAmount
。我正在尝试合并票证类型并相应地更新其他两个列表
数据如下:
lstTicketType | lstQuantity | lstAmount
---------------------------------------
Standard | 1 | 8:5
Standard | 1 | 8.5
Student | 1 | 6.5
Student | 1 | 6.5
Senior | 1 | 4
我可以使用
var query = lstTicketType.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(y => new { Counter = y.Count() })
.ToList();
如何更新列表,使其看起来像
lstTicketType | lstQuantity | lstAmount
---------------------------------------
Standard | 2 | 17
Student | 2 | 13
Senior | 1 | 4
尝试使用“Sum”。不要依赖我的答案,试着编写自己的代码来理解它是如何工作的。否则,您将永远不会知道如何编写代码。这是我的推荐信-
内部舱单
{
公共字符串TicketType{get;set;}
公共整数数量{get;set;}
公共十进制数{get;set;}
}
内部课程计划
{
私有静态void Main(字符串[]args)
{
var list=新列表();
添加(新票证(){TicketType=“Standard”,数量=1,金额=8.5m});
添加(新票证(){TicketType=“Standard”,数量=1,金额=8.5m});
添加(新票证(){TicketType=“Student”,数量=1,金额=6.5m});
添加(新票证(){TicketType=“Student”,数量=1,金额=6.5m});
添加(新票证(){TicketType=“Senior”,数量=1,金额=4m});
foreach(列表中的变量项)
{
System.Console.WriteLine($“TicketType:{item.TicketType},数量:{item.Quantity},金额:{item.Amount}”);
}
System.Console.WriteLine(“------------------------------------------------”);
list=list.GroupBy(x=>x.TicketType)。选择(x=>newticket())
{
TicketType=x.First().TicketType,
数量=x.总和(y=>y.数量),
金额=x.Sum(y=>y.Amount)
}).ToList();
foreach(列表中的变量项)
{
System.Console.WriteLine($“TicketType:{item.TicketType},数量:{item.Quantity},金额:{item.Amount}”);
}
System.Console.Read();
}
}
List tickets=新列表()
{
新票(){
TicketType=“标准”,
数量=1,
总面积=8.5M
},
新票(){
TicketType=“标准”,
数量=1,
总面积=8.5M
},
新票(){
TicketType=“学生”,
数量=1,
总高度=6.5M
},
新票(){
TicketType=“学生”,
数量=1,
总高度=6.5M
},
新票(){
TicketType=“高级”,
数量=1,
数量=4M
},
};
var groupTicket=tickets.GroupBy(p=>p.TicketType)。选择(t=>new
{
TicketType=t.键,
数量=t.总和(x=>x.数量),
金额=总金额(x=>x.Amout)
}).ToList();
您好,您的答案在下面的代码中
List<string> lstTicketType = new List<string>() { "Standard", "Standard", "Student", "Student", "Senior" };
List<int> lstQuantity = new List<int>() { 1,1,1,1,1};
List<double> lstAmount = new List<double>() {8.5 , 8.5 , 6.5 , 6.5 ,4};
List<mergeClass> LstMC = new List<mergeClass>();
for (int i = 0; i < lstTicketType.Count(); i++)
{
mergeClass NewMC = new mergeClass(lstTicketType[i], lstQuantity[i], lstAmount[i]);
LstMC.Add(NewMC);
}
var query=LstMC.GroupBy(q=>q.TicketType)
.Select(q=>new{TicketType=q.First().TicketType,
Quantity=q.Sum(a=>a.Quantity),
Amount=q.Sum(a=>a.Amount)
}).ToList();
提示:使用Sum()。
List<Ticket> tickets = new List<Ticket>()
{
new Ticket(){
TicketType="Standard",
Quantity =1,
Amout= 8.5M
},
new Ticket(){
TicketType="Standard",
Quantity =1,
Amout= 8.5M
},
new Ticket(){
TicketType="Student",
Quantity =1,
Amout= 6.5M
},
new Ticket(){
TicketType="Student",
Quantity =1,
Amout= 6.5M
},
new Ticket(){
TicketType="Senior",
Quantity =1,
Amout=4M
},
};
var groupTicket = tickets.GroupBy(p => p.TicketType).Select(t => new
{
TicketType = t.Key,
Quantity = t.Sum(x => x.Quantity),
Amount = t.Sum(x => x.Amout)
}).ToList();
List<string> lstTicketType = new List<string>() { "Standard", "Standard", "Student", "Student", "Senior" };
List<int> lstQuantity = new List<int>() { 1,1,1,1,1};
List<double> lstAmount = new List<double>() {8.5 , 8.5 , 6.5 , 6.5 ,4};
List<mergeClass> LstMC = new List<mergeClass>();
for (int i = 0; i < lstTicketType.Count(); i++)
{
mergeClass NewMC = new mergeClass(lstTicketType[i], lstQuantity[i], lstAmount[i]);
LstMC.Add(NewMC);
}
var query=LstMC.GroupBy(q=>q.TicketType)
.Select(q=>new{TicketType=q.First().TicketType,
Quantity=q.Sum(a=>a.Quantity),
Amount=q.Sum(a=>a.Amount)
}).ToList();
public class mergeClass
{
public string TicketType { set; get; }
public int Quantity { set; get; }
public double Amount { set; get; }
public mergeClass(string T, int Q, double A)
{
TicketType = T;
Quantity = Q;
Amount = A;
}
}