PDA

View Full Version : سوال: چند شرط در select در linq



ashkan1234
پنج شنبه 31 مرداد 1392, 19:40 عصر
با سلام چطور مبشه چند شرط در قسمت select نوشت در linq ؟:متفکر::متفکر::لبخند::لبخند:

nice_boy_a
پنج شنبه 31 مرداد 1392, 19:47 عصر
سلام.
به سختی :لبخند:
با where شرط مینویسی، و با and شرط ها رو ترکیب میکنی
خودت تستش کن، VS فعلا ندارم


va r q=from i in DataSorce
where i.ID > 10 and i.name.EndWith("y")
select i;

ساختارش درسته ولی شاید اشتباه تاپی یا دستوری داشته باشه :چشمک:

gilas1368
پنج شنبه 31 مرداد 1392, 19:48 عصر
using (var db=new ShireEntities())
{
return db.Shires.Where(shire => shire.Enable).ToList();
}

من ی شرط گذاشتم
شما میتونی بعد از شرط اول با && شرطای دلخواهت رو بنویسی

ashkan1234
پنج شنبه 31 مرداد 1392, 19:56 عصر
ولی من منظورم where نبود!منظورم if بود:لبخند:

gilas1368
پنج شنبه 31 مرداد 1392, 20:00 عصر
بیشتر توضیح بدید
سوالتون گنگه

nice_boy_a
پنج شنبه 31 مرداد 1392, 20:03 عصر
ولی من منظورم where نبود!منظورم if بود:لبخند:

منظورت تو حلقم ! سوالتو واضح بپرس

ashkan1234
پنج شنبه 31 مرداد 1392, 20:10 عصر
چشم!
اینجا رو ببینید با عملگرهای سه عملوندی و از این حرفا شرط رو داخل select گذاشتم!
ولی واسه این جور شرط فقط دوتا عمل رو میشه چک کرد!
var WPK = db.tbl_Works.Where(c => listId.Contains(c.WPK_Id));
var RES = WPK.Select(c => new
{

FullName=c.tbl_Personel.PRS_Name+" "+c.tbl_Personel.PRS_Family,
Isman=c.tbl_Personel.Isman==true?"زن":"مرد",
}
حالا میخوام که داخل select ازif استفاده کنم!
مثلا الان غیر این حالتی که من نوشتم شما چطوری میتونی مرد یا زن بودن رو داخل Select مشخص کنی(البته با if)؟
اگر نا واضحه بفرمایید بازهم توضیح بدهم!

nice_boy_a
پنج شنبه 31 مرداد 1392, 20:31 عصر
مرد یا زن بودن رو چه طور مشخص میکنی ؟ اگه با فیلد دو وضعیتی باشه، نیازی به if نیست، میتونی قراردادی واسه خودت تنظیم کنی
مثلا اگه true بود یعنی مرد و اگه false بود یعنی زن.

ashkan1234
پنج شنبه 31 مرداد 1392, 20:59 عصر
مرد یا زن بودن رو چه طور مشخص میکنی ؟ اگه با فیلد دو وضعیتی باشه، نیازی به if نیست، میتونی قراردادی واسه خودت تنظیم کنی
مثلا اگه true بود یعنی مرد و اگه false بود یعنی زن.
برادر من اگه نگاه کنی به کد متوجه میشی منظورم رو!مرد و زن بودن مثالی بود برای آوردن شرط در select!
شما بفرمایید که چطوری میشه شرط چندتایی رو آورد توش!
غیر این مدلی که من نوشتم شما چطوری میتونی داخل select شرط بنویسی؟

ashkan1234
پنج شنبه 31 مرداد 1392, 21:10 عصر
آقا الان یکی بخواد این شرط ها رو بیاره توی select باید چیکار کنه!
یکی اینو بهم بگه؟
در واقع میخوام توی select بالا مقدار Printed بیاد!
Printed هم یه متغیر سراسری double!
Public double Printed{get;set;}
اینم شرط:
if (opt.RDOTlbMorMah.Checked)
{
var one_m=db.tbl_Works.Where(c=> listId.Contains(c.WPK_Id));
var onem = one_m.Select(c => c.WPK_TMor).FirstOrDefault();
Printed= Convert.ToDouble(onem);

}
if (opt.RDOTlbMor6mah.Checked)
{

var total6mah=db.tbl_Works.Where(c=> PRS_Id.Contains(c.tbl_Personel.PRS_Id) && c.WPK_Sal==c.WPK_Sal && (c.WPK_MAH_Id>=1 || c.WPK_MAH_Id<=5));
var maj6 = total6mah.Select(c => c.WPK_TMor).Sum();
Printed= Convert.ToDouble(maj6);

}
if (opt.RDOTlbMorSal.Checked)
{


var totla_12 = db.tbl_Works.Where(c => PRS_Id.Contains(c.tbl_Personel.PRS_Id) && c.WPK_Sal == c.WPK_Sal && (c.WPK_MAH_Id >= 1 || c.WPK_MAH_Id <= 11));
var maj12 = totla_12.Select(c => c.WPK_TMor).Sum();
Printed= Convert.ToDouble(maj12) ;

}
الان خروجی Printed صفر هستش که یعنی مقدار شرط اول رو توش میریزه در صورتی که مقدارش صفر نیست!

Direlap
جمعه 01 شهریور 1392, 14:26 عصر
به نظرم شما دارید یه اشتباهی رو مرتکب میشید. (البته اینو داره حسم میگه)

شما میتونید query خودتون رو بنویسید و توی خود سی شارپ اون قسمتی که نیاز به شرط دارید یا مثلا if به کار ببرید. یعنی شرطتتون رو و یا if رو به query اعمال کنید.

فرض کنید میخواهید زن یا مرد بودن رو مشخص کنید. کافیه query رو بنوسید و متغیری که جواب query شما توش نوشته شده رو چک کنید اگه مرد بود مثلا آیتمش رو بریزه به لیست مردان و اگه زن بود آیتمش رو بریزه به لیس زنان.

ashkan1234
جمعه 01 شهریور 1392, 14:38 عصر
برادر من ما یک مقدار میخواییم تعریف کنیم و توی اون مقدار مثلا مشخص بشه زنه یا مرد!
نمی خوام دوتا متغیر مقدار بگیره!
اگه اشتباه متوجه شدم لطقا بیشتر توضیح بدبد!

Direlap
جمعه 01 شهریور 1392, 14:50 عصر
برای اینکه بشه بهتر شما رو راهنمایی کرد لطفا جدولتون رو به همراه یک کوئری ساده که میخواهید اونو انجام بدید رو اینجا قرار بدید تا بتونیم کمکتون کنیم.

debugger
جمعه 01 شهریور 1392, 15:12 عصر
از برنامه ی LinqPad یا SQLtoLinq استفاده کنید .

ashkan1234
سه شنبه 12 شهریور 1392, 16:52 عصر
سلام خیلی برام وقت گیره بخوام یه سورس بزارم ولی اگر مجبور بشم اینکارو میکنم!
همجنان مشکلم پابرجاست!
اگر کسی تجربشو داشته مارو بی نصیب نذاره!