আমার কাছে পণ্য সংগ্রহ রয়েছে
public class Product {
public Product() { }
public string ProductCode {get; set;}
public decimal Price {get; set; }
public string Name {get; set;}
}
এখন আমি পণ্যের কোডের উপর ভিত্তি করে সংগ্রহটি গোষ্ঠীভুক্ত করতে এবং প্রতিটি কোডের জন্য নাম, নম্বর বা পণ্য এবং প্রতিটি পণ্যের মোট মূল্য নির্ধারণ করে এমন একটি বস্তু ফিরিয়ে দিতে চাই।
public class ResultLine{
public ResultLine() { }
public string ProductName {get; set;}
public string Price {get; set; }
public string Quantity {get; set;}
}
সুতরাং আমি প্রোডাক্ট কোড অনুসারে একটি গ্রুপবাই ব্যবহার করি, তারপরে আমি যোগফলটি গণনা করি এবং প্রতিটি পণ্য কোডের জন্য রেকর্ডের সংখ্যাও গণনা করি।
আমার এ পর্যন্ত যা আছে:
List<Product> Lines = LoadProducts();
List<ResultLine> result = Lines
.GroupBy(l => l.ProductCode)
.SelectMany(cl => cl.Select(
csLine => new ResultLine
{
ProductName =csLine.Name,
Quantity = cl.Count().ToString(),
Price = cl.Sum(c => c.Price).ToString(),
})).ToList<ResultLine>();
কোনও কারণে, যোগফলটি সঠিকভাবে করা হলেও গণনা সর্বদা 1 হয়।
স্যাম্প ডেটা:
List<CartLine> Lines = new List<CartLine>();
Lines.Add(new CartLine() { ProductCode = "p1", Price = 6.5M, Name = "Product1" });
Lines.Add(new CartLine() { ProductCode = "p1", Price = 6.5M, Name = "Product1" });
Lines.Add(new CartLine() { ProductCode = "p2", Price = 12M, Name = "Product2" });
নমুনা ডেটা সহ ফলাফল:
Product1: count 1 - Price:13 (2x6.5)
Product2: count 1 - Price:12 (1x12)
পণ্য 1 এর গণনা = 2 হওয়া উচিত!
আমি এটি একটি সাধারণ কনসোল অ্যাপ্লিকেশনটিতে অনুকরণ করার চেষ্টা করেছি কিন্তু সেখানে আমি নিম্নলিখিত ফলাফল পেয়েছি:
Product1: count 2 - Price:13 (2x6.5)
Product1: count 2 - Price:13 (2x6.5)
Product2: count 1 - Price:12 (1x12)
প্রোডাক্ট 1: কেবল একবার তালিকাভুক্ত করা উচিত ... উপরের কোডটি পেস্টবিনে পাওয়া যাবে: http://pastebin.com/cNHTBSie