PDA

View Full Version : تغيرات Property در LINQ



Mostafa_Dindar
جمعه 27 فروردین 1389, 09:14 صبح
سلام ،
نميدونستم عنوان رو چطور انتخاب كنم . اگر نا مناسب هست ، مديران لطف كنند و اصلاح كنند .

از اونجايي كه اين اولين پروژه اي هست كه قصد دارم باLINQ TO SQL بنويسم ، شايد سوال من خيلي مبتدي باشد .

سوال من :

من ميخواهم تاريخ را به فارسي در UI نمايش بدم ، قبلا (درست يا غلط) به اين صورت عمل ميكردم كه به ازاي هر فيلد از نوع تاريخ در ديتابيس ، كه يك Property هم از نوع تاريخ در Bussiness Object خودم داشتم يك فيلد از نوع رشته ميگرفتم و در Getter آن توسط يك متد آن را به رشته فارسي تبديل ميكردم .

مثلا :
private DateTime _insertDate;
/// <summary>
/// تاريخ درج
/// </summary>
public DateTime InsertDate
{
get { return _insertDate; }
set { _insertDate = value; }
}

// اين فيلد در ديتابيس وجود ندارد و از نوع رشته است ، اين فيلد به كنترلهاي رابط كاربر بايند ميشود
public string PInsertDate
{
get { return FarsiCalendar.ToPersianDate(_insertDate); }
}

حال من نميدونم در LINQ چطور اين كار ( يا روش بهتري كه شما پيشنهاد ميكنيد ) را پياده سازي كنم .

اگر من اينطور بنويسم :

ToosDataContext db = new ToosDataContext();
var newslist = from p in db.News
select new {p.NewsId,p.Title,tarikh =MD.Utility.FarsiCalendar.ToPersianDate( p.ReleaseDate)};


GridView1.DataSource = newslist;
GridView1.DataBind();

با خطاي RunTime :
Method 'System.String ToPersianDate(System.Object)' has no supported translation to SQL.

مواجه ميشم .

من چندين روش ديگر كه به ذهنم ميرسيد رو امتحان كردم كه متاسفانه جواب نداد .

به نظر شما من چطور ميتونم اين كار رو عملي كنم و يا شما براي اين موارد چيكار ميكنيد ؟

سپاسگذارم .

Peyman.Gh
یک شنبه 05 اردیبهشت 1389, 19:45 عصر
GridView1.DataSource = newslist.tolist();
دیتابایند هم نمی خواد موفق باشی
linq رو عشق هست :D

چرا DataBind نمیخواهد ؟!

Peyman.Gh
دوشنبه 06 اردیبهشت 1389, 20:16 عصر
برای رفع ابهام بیشتر من این کد رو نوشتم و امتحان کردم و کار کرد

var newslist = from p in Directory.GetDirectories("c:\\") select p;


dataGridView1.DataSource = newslist.ToList();

در ASP.NET تا DataBind انجام ندهید اطلاعات را نمایش نمیدهد :


DataClassesDataContext db = new DataClassesDataContext();
var test = from test2 in db.stds
select test2 ;
GridView1.DataSource=test ;
GridView1.DataBind();

Mostafa_Dindar
دوشنبه 06 اردیبهشت 1389, 20:34 عصر
سلام ،

خودتون رو خسته نكنيد ، همانطور كه در اين پست (http://barnamenevis.org/forum/showpost.php?p=955682&postcount=2) قبلا گفته بودم ، مشكل رو برطرف كرده بودم :

ToosDataContext db = new ToosDataContext();
var newslist = from p in db.News
select new {p.NewsId,p.Title,tarikh =MD.Utility.ToSpecialDate( p.ReleaseDate)};

GridView1.DataSource = newslist;
GridView1.DataBind();


از اينكه به اين تاپيك التفات داشتين ممنونم