PDA

View Full Version : پر کردن data table توسط linq



ali_general
سه شنبه 16 اردیبهشت 1393, 12:36 عصر
سلام خدمت اساتید محترم
من یه جدول sql دارم که حاوی یه پرسو جو هستش مثل







ALTER PROCEDURE dbo.plogin @Username nvarchar(10), @password nvarchar(10
AS
Select * from userstable where
Username=@Username and password=@password
RETURN




که این پرس و جو رو داخل یه شی لینکیو انداختم (درگ کردمhttp://forum.p30world.com/images/New-Smile3/02.gif) حالا یه شی لینکیو ساختم و این تابع رو صدا میزنم
مثلا




() var db = new LINQDataContext

DG.DataSource = db.plogin(textBox1.Text, textBox2.Text



سوال اینجاست که دستوراتی مثل اپدیت و حذف و ایجاد رکورد جدید که خروجی ندارن راحت اجرا میشن ولی دستورات پرس و جو که باید داده برگردونن رو نمی تونم داخل هیچ متغییری بریزم و ارور میده
البته با گذاشتن دیتا گرید و ست کردن خاصیت دیتا سورس به همون linq میشه خروجی درست رو دید ولی نمیتونم داخل datatable یا dataset بریزم اگهه ممکنه کمکم کنید ممنون

parvizwpf
سه شنبه 16 اردیبهشت 1393, 14:56 عصر
خب باید دید این پروس شما داره جی برمیگردونه. ببینید معمولا باید برای پروسها یک نوع بازگشتی تعریف کرد. الان شما چم نوع بازگشتی دارید براش؟ اصلا ببنید داره دیتا میاره ؟

Mahmoud.Afrad
سه شنبه 16 اردیبهشت 1393, 15:42 عصر
از راههای مختلفی میتونی نوع رو تشخیص بدی.
مثلا خود ویژوال استادیو این کار رو انجام میده.
118704
این SP مجموعه ای از نوع StoredProcedure1Result برمیگردونه. میتونید به صورت زیر هم بنویسید.

IEnumerable<StoredProcedure1Result> query = db.StoredProcedure1();


و یا از کلمه کلیدی var استفاده کنید.

var query = db.StoredProcedure1();


در کوئری شما چون یک رکورد با یوزر و پسورد مشخص دریافت خواهد شد(مجموعه نیست) پس باید از متد SingleOrDefault استفاده کنی.

StoredProcedure1Result query = db.StoredProcedure1().SingleOrDefault();
// OR var query = db.StoredProcedure1().SingleOrDefault();
if (query != null)
{
MessageBox.Show(query.name);
// ...
}