ورود

View Full Version : سوال: تغییر مقدار خصوصیت در select



teardrop
سه شنبه 08 فروردین 1391, 19:07 عصر
به نام خدا

سلام
می خواستم خصوصیتی که از عبارت پایین به دست می آید رو تغییر بدم:


var query = from g in dbl.Table_Groups
select new
{
Name = g.nameGroup,
Img = bitImg[1]
};

یعنی مقدار Img رو تغییر بدم که با خطا مواجه میشود.

foreach (var q in query)
{
//Error - q.img is read only
q.Img = bitImg[counter++];
}
با تشکر

hf1988
پنج شنبه 10 فروردین 1391, 17:44 عصر
سلام دوست عزیز . جواب سوال شما کاملا مشخصه و اونم اینه که property شما از نوع read only هست یعنی قابلیت set شدن نداره و به این صورت تعریف شده .


private string _MyProperty;
public string MyProperty
{
get
{
return _MyProperty;
}
}


این property الان read only هستش.الان من نمیدونم شما از linq to sql استفاده کردی یا Entity Framework ولی تو پنجره designer هر کدومشون میتونی تعیین کنی property فقط خوندنی باشه.
موفق باشی.

teardrop
پنج شنبه 10 فروردین 1391, 21:05 عصر
سلام دوست عزیز
این خصوصیت یعنی Img اصلا در بانک اطلاعاتی نیست، و یک فیلد اضاضه است که می خوام درونش تصویر از نوع bitmap قرار بدم، چونکه در بانک اطلاعاتی تصویر رو ذخیره نکردم.
و چون نمی دونم که چه طوری یه فیلد جدید رو به مجموع select اضافه کنم، این فیلد اضافه رو از قبل در select با یک مقدار پیش فرض قرار دادم، که بعدا مقدار اصلی رو قرار بدم.

C#.net
پنج شنبه 10 فروردین 1391, 23:11 عصر
به نام خدا

سلام
می خواستم خصوصیتی که از عبارت پایین به دست می آید رو تغییر بدم:


var query = from g in dbl.Table_Groups
select new
{
Name = g.nameGroup,
Img = bitImg[1]
};

یعنی مقدار Img رو تغییر بدم که با خطا مواجه میشود.

foreach (var q in query)
{
//Error - q.img is read only
q.Img = bitImg[counter++];
}
با تشکر





http://msdn.microsoft.com/en-us/library/bb397696.aspx

Anonymous types provide a convenient way to encapsulate a set of read-only properties into a single object without having to explicitly define a type first.

اگر می خواهید تغییرش بدید خودتون باید یه کلاس با پراپرتی های Name و Img ایجاد کنید:


public class MyImage
{
public string Name { get; set; }
public string Img { get; set; }
}


و در ادامه


var query = from g in dbl.Table_Groups
select new MyImage
{
Name = g.nameGroup,
Img = bitImg[1]
};



foreach (var q in query)
{
//No Error
q.Img = bitImg[counter++];
}

teardrop
پنج شنبه 17 فروردین 1391, 14:14 عصر
http://msdn.microsoft.com/en-us/library/bb397696.aspx

Anonymous types provide a convenient way to encapsulate a set of read-only properties into a single object without having to explicitly define a type first.

اگر می خواهید تغییرش بدید خودتون باید یه کلاس با پراپرتی های Name و Img ایجاد کنید:


public class MyImage
{
public string Name { get; set; }
public string Img { get; set; }
}


و در ادامه


var query = from g in dbl.Table_Groups
select new MyImage
{
Name = g.nameGroup,
Img = bitImg[1]
};



foreach (var q in query)
{
//No Error
q.Img = bitImg[counter++];
}



دوست عزیز مقدار در q تغییر می کند بدون خطا ولی در query مقدار، مقدار قبلی هست و تغییری در آن ایجاد نمی شود.