के साथ भारित औसत की गणना करना मेरा लक्ष्य एक तालिका से भारित औसत प्राप्त करना है, दूसरी तालिका प्राथमिक कुंजी के आधार पर।LINQ
उदाहरण डेटा:
Table1
Key WEIGHTED_AVERAGE
0200 0
तालिका 2
ForeignKey Length Value
0200 105 52
0200 105 60
0200 105 54
0200 105 -1
0200 47 55
मैं एक खंड की लंबाई के आधार पर एक भारित औसत प्राप्त करने की आवश्यकता है और मैं के मूल्यों की अनदेखी करने की जरूरत है -1 । मुझे पता है कि एसक्यूएल में ऐसा कैसे करें, लेकिन मेरा लक्ष्य LINQ में ऐसा करना है। यह एसक्यूएल में कुछ इस तरह दिखता है:
SELECT Sum(t2.Value*t2.Length)/Sum(t2.Length) AS WEIGHTED_AVERAGE
FROM Table1 t1, Table2 t2
WHERE t2.Value <> -1
AND t2.ForeignKey = t1.Key;
मैं अभी भी बहुत LINQ करने के लिए नया हूँ, और एक कठिन समय पता लगाना मैं यह कैसे अनुवाद होगा रही है। परिणाम भारित औसत लगभग 55.3 तक आना चाहिए। धन्यवाद।
धन्यवाद, बहुत उपयोगी है। मैं इस एक एक लाइनर ... सार्वजनिक स्थिर नाव WeightedAverage बनाने को बंद कर (इस IEnumerable आइटम, समारोह मूल्य, समारोह वजन) { वापसी items.Sum (मद => मूल्य (आइटम) * वजन (आइटम))/आइटम.Sum (वजन); } –
josefresno
मुझे जोड़ना था "अगर भारित Sum.AlmostZero() वापसी 0" शून्य के द्वारा विभाजन के खिलाफ सुरक्षा के लिए गणना के बाद जब सभी वजन और सभी मान शून्य होते हैं। यदि कोई डबल शून्य है तो AlmostZero एक एक्सटेंशन फ़ंक्शन चेक है। – derdo