PDA

View Full Version : مشکل در کوئری گرفتن توسط LINQ



HamidNch
جمعه 11 بهمن 1392, 18:31 عصر
سلام.من دوتا جدول دارم یکی جدول اشخاص و یکی جدول کاربران
و می خوام از جدول اشخاص افرادی رو سلکت کنم که در جدول کاربران اضافه نشده باشند.
جدول اشخاص: Personel
جدول کاربران: User
فیلد کد شخص در جدول کاربران: UserPersonelId
و می خوام با استفاده از Sql Linq اینکار رو انجام دادم
این کد رو هم نوشتم اما جواب نمیده:


var myQuery = from person in UnitOfWork.GetRepository<Personel>().GetAll()
from user in UnitOfWork.GetRepository<User>().GetAll()
.Where(u=>u.UserPersonalId != person.Id)
select new PersonelViewModel()
{
PersonelId = person.Id,
PersonelCode = person.PersonelCode,
PersonelName = person.PersonelName,
PersonelFamily = person.PersonelFamily,
PersonelFatherName = person.PersonelFatherName
};

Mahmoud.Afrad
جمعه 11 بهمن 1392, 19:12 عصر
با متد Any وجود یا عدم وجود رو میتونی چک کنی:

var query = from person in db.Personels
where !(from user in db.Users
where person.Id == user.UserPersonelId
select user).Any()
select person;

//var query = db.Personels.Where(p => !db.Users.Any(u => p.Id == u.UserPersonelId));

HamidNch
جمعه 11 بهمن 1392, 20:47 عصر
ممنون از توجهتون.اما جواب نداد.
این کوئریش هست با این روش جواب میده:

SELECT * FROM Personel p
WHERE p.Id NOT IN(SELECT u.UserPersonalId FROM [User] u)
ORDER BY p.Id DESC

HamidNch
جمعه 11 بهمن 1392, 21:19 عصر
متوجه مشکلم شدم این جواب داد:

IQueryable<Personel> ds1 = UnitOfWork.GetRepository<Personel>().GetAll();
IQueryable<User> ds2 = UnitOfWork.GetRepository<User>().GetAll();
var myQuery = from person in ds1
where !(from user in ds2
where user.UserPersonalId == person.Id
select user).Any()