Shamil Salakhetdinov
shamil at smsconsulting.spb.ru
Fri Jul 17 02:22:16 CDT 2009
(continued) Request: ======== Get all pairs of part numbers such that some supplier supplies both of the indicated parts. LINQ for EF (C#): ================= SPJEntities suppliersAndParts = new SPJEntities(); var queryResult1 = ( from spj1 in suppliersAndParts.SPJ from spj2 in suppliersAndParts.SPJ where (spj1.SN == spj2.SN) select new { SN = spj1.SN, PN1 = spj1.PN, PN2 = spj2.PN } ).Distinct() ; var queryResult2 = ( from p1 in suppliersAndParts.P from p2 in suppliersAndParts.P let p1Num = p1.PN.Substring(1, 1) let p2Num = p2.PN.Substring(1, 1) where (p1.PN != p2.PN && string.Compare(p1Num,p2Num) < 0 ) select new { PN1 = p1.PN, PN2 = p2.PN } ).Distinct() ; var queryResult = from q1 in queryResult1 from q2 in queryResult2 where (q1.PN1 == q2.PN1 && q1.PN2 == q2.PN2) orderby q1.SN, q1.PN1, q1.PN2 select new { SN = q1.SN, PN1 = q1.PN1, PN2 = q1.PN2 }; Console.WriteLine("SN PN1 PN2"); Console.WriteLine("----------"); foreach (var row in queryResult) Console.WriteLine("{0} {1} {2}", row.SN, row.PN1, row.PN2); Console.WriteLine("----------"); -- Shamil