मेरी कंपनी में 0 से एन विभाग, 1 विभाग में 0 से एन कार्यालय, और 1 कार्यालय में 0 से एन एम्प्लीज़ हैं.अब मुझे एएमपीआई की औसत आयु सूचीबद्ध करने के लिए linq का उपयोग करके एक क्वेरी की आवश्यकता है विभाग, अगर एक विभाग में कोई भी नहीं तो डिफ़ॉल्ट औसत 0. कोड है नीचे है:बाहरी से LINQ से इकाइयों का उपयोग करके क्वेरी में शामिल हों
DataContext ctx = new DataContext();
var q0 = from d in ctx.Departments
join o in ctx.Offices on d.Id equals o.DepartmentId
join e in ctx.Employees on o.Id equals e.OfficeId
group e by d into de
select new {
DepartmentId = de.Key.Id,
AverageAge = de.Count() == 0 ? 0 : de.Average(e => e.Age),
};
var q1 = from d in ctx.Departments
join de in q0 on d.Id equals de.DepartmentId into des
from de in des.DefaultIfEmpty()
select new
{
DepartmentName = d.Name,
AverageAge = de == null ? 0 : de.AverageAge
};
var result = q1.ToList();
foreach (var item in result)
{
Console.WriteLine("{0}-{1}", item.DepartmentName, item.AverageAge);
}
ctx.Dispose();
लेकिन यह कैसे एक प्रश्न के Q0 और Q1 गठबंधन करने के लिए?
var newQ2 = from d in ctx.Departments
join o in ctx.Offices on d.Id equals o.DepartmentId
join e in ctx.Employees on o.Id equals e.OfficeId
group e by d into de.DefaultIfEmpty()
select new {
DepartmentId = de.Key.Id,
DepartdentName = select d.Name from d where d.id = de.Key.Id,
AverageAge = de.Count() == 0 ? 0 : de.Average(e => e.Age),
};
परिशिष्ट::
यहाँ है: http://www.codeproject.com/Articles/488643/LinQ-Extended-Joins –
बिल्कुल सही विस्तार। लेकिन वे विधियां हैं, धाराप्रवाह linq नहीं। – user1729842