c# - Linq का उपयोग करते हुए सम डेटा तालिका कॉलम



asp.net datatable (1)

हाय सब मैं डाटा डेटा में डेटा के रूप में निम्नानुसार कर रहा हूँ

SKU  Quantity  UnitPrice  LinePrice
 A     10         2         20
 A     10         2         20
 B     10         2         40

मैं डुप्लिकेट रिकॉर्ड के साथ SKU को जोड़ना चाहूंगा और परिणाम निम्नानुसार प्राप्त करूँगा

SKU  Quantity  UnitPrice  LinePrice
 A     20         2         40
 B     10         2         40

मैंने यह कोशिश की, लेकिन कोई भाग्य नहीं

var query = from row in lDTSalesOrder.AsEnumerable()
                            group row by row.Field<string>("SKU") into grp
                            orderby grp.Key
                            select new
                            {
                                Id = grp.Key,
                                Sum = grp.Sum(r => r.Field<double>("UnitPrice"))
                            };

आपके नमूना आउटपुट में आपने वास्तव में इकाई मूल्य का सार नहीं किया है, लेकिन ऐसा लगता है कि आप क्या चाहते हैं, ऐसा कुछ है:

var results = 
    from row in lDTSalesOrder
    group row by row.Field<string>("SKU") into grp
    orderby grp.Key
    select new
    {
        SKU = grp.Key,
        Quantity = grp.Sum(r => r.Field<double>("Quantity")),
        UnitPrice = grp.Sum(r => r.Field<double>("UnitPrice")),
        LinePrice = grp.Sum(r => r.Field<double>("LinePrice"))
    };

इससे उत्पादन होगा:

SKU  Quantity  UnitPrice  LinePrice
 A     20         4         40
 B     10         2         40

यदि आप वाकई पहले परिणाम रिकॉर्ड के लिए 2 का एक यूनिट मूल्य बनाना चाहते हैं, तो आप जो चाहते हैं वह नहीं है; आपको कुछ अन्य समेकित फ़ंक्शन का उपयोग करना होगा। Min , Max , Average , या यहां तक ​​कि Select(...).First() उस नतीजे का उत्पादन करेगा, लेकिन आपको अपने आउटपुट में आप क्या चाहते हैं, इसे और अधिक सटीक रूप से परिभाषित करना होगा। आप यह भी कर सकते हैं:

var results = 
    from row in lDTSalesOrder
    group row by new { SKU = row.Field<string>("SKU"), UnitPrice = row.Field<string>("UnitPrice") } into grp
    orderby grp.Key.SKU
    select new
    {
        SKU = grp.Key.SKU,
        Quantity = grp.Sum(r => r.Field<double>("Quantity")),
        UnitPrice = grp.Key.UnitPrice,
        LinePrice = grp.Sum(r => r.Field<double>("LinePrice"))
    };

इनमें से कोई विकल्प उत्पन्न करेगा:

SKU  Quantity  UnitPrice  LinePrice
 A     20         2         40
 B     10         2         40




datatable