2017-12-11 6 views
1

私は3リストを持っていますlstTicketTypelstQuantitylstAmountです。私は複数のリストを見つける

応じてチケットの種類をマージし、他の二つのリストを更新しようとしています

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 
+0

ヒントにクラスの下に作成する必要があります:使用 '合計() '関数を使用して' lstAmount'を合計します。 –

答えて

3

「合計」を使用してみてください。私の答えに頼らず、それがどのように動作するかを理解するための独自のコードを書くようにしてください。さもなければ、あなたはコード化する方法を決して知りません。これは私の参照です - https://stackoverflow.com/a/16522841/1554116

internal class Ticket 
{ 
    public string TicketType { get; set; } 
    public int Quantity { get; set; } 
    public decimal Amount { get; set; } 
} 
internal class Program 
{ 
    private static void Main(string[] args) 
    { 
     var list = new List<Ticket>(); 
     list.Add(new Ticket() { TicketType = "Standard", Quantity = 1, Amount = 8.5m }); 
     list.Add(new Ticket() { TicketType = "Standard", Quantity = 1, Amount = 8.5m }); 
     list.Add(new Ticket() { TicketType = "Student", Quantity = 1, Amount = 6.5m }); 
     list.Add(new Ticket() { TicketType = "Student", Quantity = 1, Amount = 6.5m }); 
     list.Add(new Ticket() { TicketType = "Senior", Quantity = 1, Amount = 4m }); 

     foreach (var item in list) 
     { 
      System.Console.WriteLine($"TicketType: {item.TicketType}, Quantity: {item.Quantity}, Amount: {item.Amount}"); 
     } 

     System.Console.WriteLine("------------------------------------------"); 

     list = list.GroupBy(x => x.TicketType).Select(x => new Ticket() 
     { 
      TicketType = x.First().TicketType, 
      Quantity = x.Sum(y => y.Quantity), 
      Amount = x.Sum(y => y.Amount) 
     }).ToList(); 

     foreach (var item in list) 
     { 
      System.Console.WriteLine($"TicketType: {item.TicketType}, Quantity: {item.Quantity}, Amount: {item.Amount}"); 
     } 

     System.Console.Read(); 
    } 
} 
+0

私は使用できる参考資料を提供してくれてありがとう – shikiko

0
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(); 
0

ハイテクあなたの答えは、コードの下

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; 
    } 

} 
関連する問題