join ב Lambda Expressions

  • פותח הנושא smira
  • פורסם בתאריך

smira

New member
join ב Lambda Expressions

שלום,
אני משתמשת ב- join ב Lambda Expressions אך אני רוצה שהוא יתפקד לי כמו inner join במשפט sql
כרגע בפקודת ה- join הוא מביא לי את כל הנתונים גם אם הם לא קשורים בשתי הטבלאות ואני רוצה את המצב ההפוך
דוגמא:
using (var db = new CoolPoolEntities())
{
var list = db.tblDPages
.Join(db.tblDPagesH2, dc => dc.id,
d => d.idItem,
(dc, d) => new { tblDPages = dc, tblDPagesH2 = d })

.Where(x => x.tblDPages.enabled && db.tblDPagesH2.Any())
.OrderBy(x => x.tblDPages.importance)
.Select(x => new Core.Business.DPages
{
sID = x.tblDPages.id.ToString(),
sTitleH1 = x.tblDPages.titleH1.ToString()


}).Distinct();

אשמח לעזרה
מירה
 

nocgod

New member
בואי נפרמט את הקוד קודם

using (var db = new CoolPoolEntities()){
var list = db.tblDPages
.Join(db.tblDPagesH2, dc => dc.id, d => d.idItem, (dc, d) => new { tblDPages = dc, tblDPagesH2 = d }).Where(x => x.tblDPages.enabled && db.tblDPagesH2.Any()) .OrderBy(x => x.tblDPages.importance) .Select(x => new Core.Business.DPages { sID = x.tblDPages.id.ToString(), sTitleH1 = x.tblDPages.titleH1.ToString() }).Distinct();}
 

Royi Namir

New member


 

nocgod

New member
את יכולה להביא דוגמא לקלט, פלט ומה את מצפה?

כי כתבתי קוד אצלי והוא עושה מביא לי תוצאות אך ורק אם 2 המפתחות שהבאתי לו תואמים.

using System;using System.Collections.Generic;
using System.Linq;
using System.Text;using System.Threading.Tasks;namespace Linq{ class Program { class Something { public int Id { get; set; } public string MyData { get; set; } } class SomethingElse { public int Id { get; set; } public int OtherId { get; set; } } static void Main(string[] args) { #region var left = new List<Something> { new Something { Id = 1, MyData = "this is my data 1" }, new Something { Id = 2, MyData = "this is my data 2" }, new Something { Id = 3, MyData = "this is my data 3" } }; var right = new List<SomethingElse> { new SomethingElse { Id = 1, OtherId = 1 }, new SomethingElse { Id = 2, OtherId = 3 }, new SomethingElse { Id = 3 } }; #endregion var result = left.Join(right, x => x.Id, x => x.OtherId, (l, r) => new { LeftId = l.Id, RightId = r.Id, l.MyData }); Console.WriteLine("Left"); foreach (var c in left) { Console.WriteLine($"{{ Id = {c.Id} MyDaya = {c.MyData} }}"); } Console.WriteLine("Right"); foreach (var c in right) { Console.WriteLine($"{{ Id = {c.Id} OtherId = {c.OtherId} }}"); } Console.WriteLine("Result"); foreach (var c in result) { Console.WriteLine(c.ToString()); } } }}
 
למעלה