ورود

View Full Version : in در Linq



sara_776
پنج شنبه 04 شهریور 1389, 15:37 عصر
سلام
کسی می تونه این Select رو از sql به Linq to Entity تبدیل کنه؟

Select * from tblMain
Where tblMain.ID in (Select ID from tblDetail)

کلا من با In توی linq مشکل دارم و نمی تونم اونو تو Linq شبیه سازی کنم!

مهدی فرزاد
پنج شنبه 04 شهریور 1389, 17:05 عصر
سلام

var q = from a in db.tblMains
join b in db.tblDetails on a.ID equals b.ID
select a;

majid325
پنج شنبه 04 شهریور 1389, 18:09 عصر
این نکته که Entity ها Parent و Child خودشون رو میشناسن قابل ذکر هست

sara_776
جمعه 05 شهریور 1389, 13:45 عصر
سلام

var q = from a in db.tblMains
join b in db.tblDetails on a.ID equals b.ID
select a;
شاید منظورمو درست نگفتم.
اصلا بحث Master و Detail نیست!
مشکل من جستجو در یک مجموعه است. بهتره سوالمو اینجور بگم:

Select * from tbl1
Where tbl1.ID in (Select ID from tbl50)

مهدی فرزاد
جمعه 05 شهریور 1389, 14:09 عصر
شاید منظورمو درست نگفتم.
اصلا بحث Master و Detail نیست!
مشکل من جستجو در یک مجموعه است. بهتره سوالمو اینجور بگم:

Select * from tbl1
Where tbl1.ID in (Select ID from tbl50)
سلام
مگه نتیجه این جستجو برگرداندن فیلدهیی که در tbl1 آیدیشون در Tbl50 هم هست ، نیست؟؟

sara_776
جمعه 05 شهریور 1389, 14:38 عصر
سلام
مگه نتیجه این جستجو برگرداندن فیلدهیی که در tbl1 آیدیشون در Tbl50 هم هست ، نیست؟؟
درسته.
اما فکر نمی کنید اگر توی sql با Join های میشد کار in رو انجام داد ، دیگه دستور In برا جستجو در یک مجموعه اضافه بود؟
شما کلا مفهوم in در sql رو می دونید؟

مهدی فرزاد
جمعه 05 شهریور 1389, 15:49 عصر
سلام
برای این کار شما باید دوتا Quere بنویسی
مثلا

AdventureWorks.DB db=new DB();

var itemQuery = from cartItems in db.SalesOrderDetails
where cartItems.SalesOrderID == 75144
select cartItems.ProductID;
و بعد

var myProducts = from p in db.Products
where itemQuery.Contains(p.ProductID)
select p;

sara_776
جمعه 05 شهریور 1389, 16:18 عصر
سلام
برای این کار شما باید دوتا Quere بنویسی
مثلا

AdventureWorks.DB db=new DB();

var itemQuery = from cartItems in db.SalesOrderDetails
where cartItems.SalesOrderID == 75144
select cartItems.ProductID;
و بعد

var myProducts = from p in db.Products
where itemQuery.Contains(p.ProductID)
select p;



درسته. اما تو VB.NET چطوریه؟
من تست کرده بودم اگر Query اولی رو تو Query دومی بنویسم جواب میده و کلی شلوغ میشه.
اما اگر به روشی که شما پیشنهاد کردین بنویسم تو VB.NET همدیگه رو نمی شناسن!
یعنی itemQuery رو تو Query دومی نمیشناسه!

مهدی فرزاد
جمعه 05 شهریور 1389, 17:14 عصر
درسته. اما تو VB.NET چطوریه؟
من تست کرده بودم اگر Query اولی رو تو Query دومی بنویسم جواب میده و کلی شلوغ میشه.
اما اگر به روشی که شما پیشنهاد کردین بنویسم تو VB.NET همدیگه رو نمی شناسن!
یعنی itemQuery رو تو Query دومی نمیشناسه!


Dim itemQuery = From cartItems In db.SalesOrderDetails
Where cartItems.SalesOrderID = 75144
Select cartItems.ProductID

Dim myProducts = From p In db.Products
Where itemQuery.Contains(p.ProductID)
Select p

دقت کنید در Query اول حتما باید Select به صورت cartItems.ProductID باشه وگرنه Query دوم P.ProductID رو نمی شناسه
من تست کردم مشکلی نداشت