PDA

View Full Version : سوال: اضافه کردن فیلد جدید به نتیجه یک انتخاب در لینک !!؟



cactuskhan
دوشنبه 22 خرداد 1391, 15:11 عصر
سلام
var db = new LinqDataAccessDataContext();
var picList = db.GalleryPictures.Where(x => x.GalleryAlbumId == 1).ToList();

این به من یک لیست از گالری تصاویر بر می گردونه !
توی DataTable ما به راحتی می تونستیم که یه Column به DataTable اضافه کنیم و در یک For به تک تک Row ها یک مقدار بدیم ! ولی هر چی گشتم چیزی برای لینک پیدا نکردم

ببینید مثلا من می خوام یک ستون به نام ردیف به لیست LINQ ام اضافه کنم به به اون مقدار بدم. برای گرید می خوام !

امیدوارم سوالم رو درست مطرح کرده باشم
ممنون ازشما !

m.akar
دوشنبه 22 خرداد 1391, 20:24 عصر
متوانید از این روش برای ساخت چنین ستونی استفاده کنید:

var picList = from x in db.GalleryPictures
where x.GalleryAlbumId == 1
select new {
ID=x.GalleryAlbumId,
NewColumn="Some" +x.GalleryAlbumId
};

cactuskhan
سه شنبه 23 خرداد 1391, 18:42 عصر
متوانید از این روش برای ساخت چنین ستونی استفاده کنید:

var picList = from x in db.GalleryPictures
where x.GalleryAlbumId == 1
select new {
ID=x.GalleryAlbumId,
NewColumn="Some" +x.GalleryAlbumId
};

بله با این کار یک ستون جدید اضافه میشه ولی بعدش می خوام به اون مقدار ردیف بدم و از یک شروع میشه تا به تعداد رکورد ها ! این رو چطور پیاده سازی کنم ؟

m.akar
پنج شنبه 25 خرداد 1391, 13:08 عصر
به این صورت می توانید کد خود را تغییر دهید:

int i=1;
var picList = from x in db.GalleryPictures
where x.GalleryAlbumId == 1
select new {
ID=x.GalleryAlbumId,
Counter=i++
};

hhsaffar
پنج شنبه 25 خرداد 1391, 14:14 عصر
اگر ستون ردیف برای گریدویو میخواین از این کد هم میتونید استفاده کنید(همچین ستونی به گریدویو اضافه کنید)، اینطور لازم نیست تو دیتا سورس گرید تغییر خاصی انجام بدید:

<asp:TemplateField>
<ItemTemplate>
<%# Container.DataItemIndex + 1 %>
</ItemTemplate>
</asp:TemplateField>

hhsaffar
پنج شنبه 25 خرداد 1391, 14:27 عصر
این کد جالب و درسته، منتها اگر درست یادم مونده باشه توصیه نمیشه از عبارتهای side effect دار در linq استفاده کنیم. (در اینجا i++)
متاسفانه الان linq خوبی در این مورد پیدا نمیکنم، اگر پیدا کردم همینجا میذارم.

hhsaffar
پنج شنبه 25 خرداد 1391, 14:28 عصر
به این صورت می توانید کد خود را تغییر دهید:

int i=1;
var picList = from x in db.GalleryPictures
where x.GalleryAlbumId == 1
select new {
ID=x.GalleryAlbumId,
Counter=i++
};

این کد جالب و درسته، منتها اگر درست یادم مونده باشه توصیه نمیشه از عبارتهای side effect دار(در اینجا i++) در linq استفاده کنیم.
متاسفانه الان لینک خوبی در این مورد پیدا نمیکنم، اگر پیدا کردم همینجا میذارم.