एक अंतर जो मैं चलाता हूं वह समूह में अंतर है।
जब आप वस्तुओं के लिए linq में समूह करते हैं, तो आपको श्रेणीबद्ध रूप से आकार का परिणाम मिलता है (चाबियाँ, बाल वस्तुओं के साथ)।
जब आप SQL में समूह करते हैं, तो आपको केवल कुंजी और योग मिलते हैं।
जब आप linq में sql में समूह करते हैं, तो यदि आप बच्चे के ऑब्जेक्ट्स (समेकित से अधिक) के लिए पूछते हैं, तो linq से sql प्रत्येक बच्चे को ऑब्जेक्ट प्राप्त करने के लिए कुंजी का उपयोग करके प्रत्येक समूह को दोबारा पूछेगा। यदि आपके पास हजारों समूह हैं, तो यह हजारों राउंडट्रिप्स हो सकते हैं।
//this is ok
var results = db.Orders
.GroupBy(o => o.CustomerID)
.Select(g => new
{
CustomerId = g.Key,
OrderCount = g.Count()
});
//this could be a lot of round trips.
var results = db.Orders
.GroupBy(o => o.CustomerID)
.Select(g => new
{
CustomerId = g.Key,
OrderIds = g.Select(o => o.OrderId)
});
// this is ok
// used ToList to separate linqtosql work from linqtoObject work
var results = db.Orders
.Select(o => new {o.CustomerId, o.OrderId})
.ToList()
.GroupBy(o => o.CustomerId)
.Select(g => new
{
CustomerId = g.Key,
OrderIds = g.Select(o => o.OrderId)
});
स्रोत
2009-11-12 16:00:54
भी http://stackoverflow.com/questions/2388022/case-insensitive-string-compare-with-linq-to-sql-and-linq-to-objects –