PDA

View Full Version : سوال: بازیابی مفادیر یک رکورد با linq ???????



nnnnaa
سه شنبه 21 بهمن 1393, 15:09 عصر
سلام و عرض ادب.
دوستان من میخواستم اطلاعات یک رکورد رو بخونم (برای ورود به سایت یا لاگین) این کد رو زدم.

var db = new tblUserDataContext();
var CheckUser = db.tblUsers.Where(u => u.user_id==UserName || u.user_mail==UserName && u.user_pass==Password);
اگه بخوام مقدار فیلد user_name نام واقعی رو پیدا کنم چطوری باید این کار رو کنم.

این کد برای لاگین جواب میده ولی میخوام نام کاربر رو داخل سشن بریزم نمیدونم نام رو چطور پیدا کنم.

SabaSabouhi
سه شنبه 21 بهمن 1393, 21:57 عصر
سلام
این کدی که من می‌بینم ( البته به سختی!!!! ) بجای این که کاربر رو برگردونه یه IQueriable بر می‌گردونه. که اگر ToList کنی، تازه می‌شه یه لیست. این دیگه چه جور
شناسایی هست؟
بجای Where از SingleOrDefailt استفاده کن. مقدار برگشتی رکورد کاربر هست که می‌تونی نام یا هر اطلاع دیگه‌ای لازم داری رو ازش بدست بیاری.

صبا صبوحی

nnnnaa
سه شنبه 21 بهمن 1393, 23:35 عصر
سلام.
تشکر بابت پاسختون ولی زیاد متوجه نشدم.
من تازه شروع به کار با linq کردم.

این کد که گذاشتم از پایگاه داده اطلاعات رو میخونه تست کردم تعداد سطرها رو هم میده ولی نمیدونم چظور به مقادیر سطر دسترسی داشته باشم اگه ممکنه با یه مثال توضیح بدید.
تشکر

SabaSabouhi
چهارشنبه 22 بهمن 1393, 10:06 صبح
سلام.
تشکر بابت پاسختون ولی زیاد متوجه نشدم.
من تازه شروع به کار با linq کردم.

این کد که گذاشتم از پایگاه داده اطلاعات رو میخونه تست کردم تعداد سطرها رو هم میده ولی نمیدونم چظور به مقادیر سطر دسترسی داشته باشم اگه ممکنه با یه مثال توضیح بدید.
تشکر

سلام
دوست من، قبل از شروع یه کار راجع بهش مطالعه کن. حداقل امکانات اولیه رو یاد بگیری.
متد Where یک IQueriable رو بر می‌گردونه. یعنی هنوز اطلاعات خونده نشده، اما قابل خوندنه.
وقتی بخوای IEnumerable داشته باشی ( یعنی اطلاعات خونده بشه ) باید یه تابع ToList بهش اضافه کنی
برای خوندن اولین سطر از FirstOrDefault استفاده کن. ( اگر لیست خالی باشه null بر می‌گردونه )
برای تعداد سطر از Count استفاده کن
برای انجام کاری به ازای هر سطر از ForEach استفاده کن.



var list = MyContext.MyTable
.Where( x=> x.Date > date )
.ToList();
var count = list.Count();
var firstRow = list.FirstOrDefault();

list.ForEach( x=> {
// Do something for each row;
} );



صبا صبوحی

maryam145
سه شنبه 19 اسفند 1393, 07:05 صبح
سلام دوستان خسته نباشین من با Linq کارمیکنم البته تازه شروع کردم ی فرمی طراحی کردم که کمبوباکس داره و ی دیتا گریدویو
اطلاعات کمبوباکس از جدول گروه
اطلاعات دیتاگریدویو از جدول پرسنل
می خوام وقتی ی گروه و از کمبوباکس انتخاب میکنم بیاد جدول پرسنل و فیلتر کنه فقط نام و نام خانوادگی افراد اون گروه و نمایش بده ؟

SabaSabouhi
سه شنبه 19 اسفند 1393, 08:12 صبح
سلام دوستان خسته نباشین من با Linq کارمیکنم البته تازه شروع کردم ی فرمی طراحی کردم که کمبوباکس داره و ی دیتا گریدویو
اطلاعات کمبوباکس از جدول گروه
اطلاعات دیتاگریدویو از جدول پرسنل
می خوام وقتی ی گروه و از کمبوباکس انتخاب میکنم بیاد جدول پرسنل و فیلتر کنه فقط نام و نام خانوادگی افراد اون گروه و نمایش بده ؟

سلام
WinForm کار می‌کنی یا WPF. اگه WinForm هست که هیچ، اما اگه WPF هست، راه بسیار ساده و راحتی داره که اگه
تو تالار WPF بپرسی اونجا جواب می‌دم. ( مطالب WPF بهتره که تو همه تالارها پخش نشه )

صبا صبوحی

maryam145
سه شنبه 19 اسفند 1393, 09:19 صبح
با Windows Form کارمیکنم عزیزم

maryam145
سه شنبه 19 اسفند 1393, 10:15 صبح
دوست عزیز من با WindowsForm کارمیکنم میشه راهنماییی ام کنین

SabaSabouhi
سه شنبه 19 اسفند 1393, 13:08 عصر
دوست عزیز من با WindowsForm کارمیکنم میشه راهنماییی ام کنین

سلام
با توجه به این که مدت زیادی هست که دیگه WinForm کار نمی‌کنم، اجازه بدین من نظر ندم.
اما خلاصه‌ی کار اینه که شما باید در رویداد تغییر مقدار combo، فهرست جدیدی ایجاد کنید و به
دیتاگرید خودتون بدین.

صبا صبوحی

alireza70
چهارشنبه 20 اسفند 1393, 00:15 صبح
datagrid.datasource=(from v in personel
(where v.group.contain(combo.item
.tolist()(select v

maryam145
یک شنبه 24 اسفند 1393, 06:52 صبح
ممنونم دوستان از راهنمایی هاتون من این کد و نوشتم ج گرفتم:

var b = from w in Program.linq.persenels
where
( w.idroup == Convert.ToInt32(comboBox1.SelectedValue
; select w
; dataGridView1.DataSource = b