PDA

View Full Version : سوال: چگونگی تبدیل یک عبارت linq به یک شی از یک کلاس



teardrop
چهارشنبه 26 بهمن 1390, 12:06 عصر
به نام خدا


سلام
چطوری میشه یک درخواست از linq که در متغیر از نوع var انتساب داده شده است رو به یک شی از یک کلاس تعریف شده انجام داد.
مثال:

var q = from s in i
select new
{
ID = i[0].Substring(i[0].IndexOf('=') + 2),
Name = i[1].Substring(i[1].IndexOf('=') + 2),
No = i[2].Substring(i[2].IndexOf('=') + 2),
Type = i[3].Substring(i[3].IndexOf('=') + 2),
Count = i[4].Substring(i[4].IndexOf('=') + 2)
};

public class viewPacket
{
public string ID { set; get; }
public string Name { set; get; }
public int No { set; get; }
public string Type { set; get; }
public int Count { set; get; }
}

amir3321
چهارشنبه 26 بهمن 1390, 13:54 عصر
بیشتر توضیح بده چی می خواهی

teardrop
چهارشنبه 26 بهمن 1390, 21:53 عصر
می خواستم متغیر q رو به یک شی از کلاس بالا(viewPacket) انتساب بدم.
viewPacket vp= q;
ولی در حالت عادی این کار امکان پذیر نیست.

sanay_esh
پنج شنبه 27 بهمن 1390, 11:32 صبح
سلام اگر شما بخواهید یک متغیر از کلاس خود تهیه کنید باید این کد را بنویسید

viewPacket v = new viewPacket();


و اگر بخواهید یک لیست از کلاس خود داشته باشید
List<viewPacket> vp = new List<viewPacket>();

اگر بخواهید یک LINQ داشته باشید و به لیس بالایی انتساب دهید
vp = (from m in YourCollection
select m).ToList();

teardrop
پنج شنبه 27 بهمن 1390, 15:38 عصر
سلام اگر شما بخواهید یک متغیر از کلاس خود تهیه کنید باید این کد را بنویسید

viewPacket v = new viewPacket();


و اگر بخواهید یک لیست از کلاس خود داشته باشید
List<viewPacket> vp = new List<viewPacket>();

اگر بخواهید یک LINQ داشته باشید و به لیس بالایی انتساب دهید
vp = (from m in YourCollection
select m).ToList();

سلام دوست عزیز
کدی که شما نوشتید خطا میده.YourCollection من آرایه ای از رشته هست:

string[] i = items.SelectedItem.ToString().Split(',');

خودم این کد رو نوشتم و ازش جواب گرفتم:

viewPacket[] vp = new viewPacket[q.Count()];
int counter = 0;
foreach (var obj in q)
{
vp[counter] = new viewPacket();
vp[counter].ID = int.Parse(obj.ID);
vp[counter].Name = obj.Name;
vp[counter].No = int.Parse(obj.No);
vp[counter].Type = obj.Type;
vp[counter].Count = int.Parse(obj.Count);
counter++;
}

ممنون از راهنماییتون.
اگه میتونید کد خودتون رو تصحیح کنید بلکه از اون هم استفاده کنم.

linux
پنج شنبه 27 بهمن 1390, 22:13 عصر
به نام خدا


سلام
چطوری میشه یک درخواست از linq که در متغیر از نوع var انتساب داده شده است رو به یک شی از یک کلاس تعریف شده انجام داد.
مثال:

var q = from s in i
select new
{
ID = i[0].Substring(i[0].IndexOf('=') + 2),
Name = i[1].Substring(i[1].IndexOf('=') + 2),
No = i[2].Substring(i[2].IndexOf('=') + 2),
Type = i[3].Substring(i[3].IndexOf('=') + 2),
Count = i[4].Substring(i[4].IndexOf('=') + 2)
};

public class viewPacket
{
public string ID { set; get; }
public string Name { set; get; }
public int No { set; get; }
public string Type { set; get; }
public int Count { set; get; }
}



این کد linq شما یک collection بر می گرداند ، ابتدا یک تابع درست کنید اسمش را بگذارید مثلا LinqToClass
در این تابع نحوه map شدن اشیا را مشخص کنید بعد در یک حلقه برای var این تابع به تعداد ابجکتهای موجود در var صدا بزنید. امیدوارم رسونده باشم مطلب را

teardrop
پنج شنبه 27 بهمن 1390, 23:42 عصر
این کد linq شما یک collection بر می گرداند ، ابتدا یک تابع درست کنید اسمش را بگذارید مثلا LinqToClass
در این تابع نحوه map شدن اشیا را مشخص کنید بعد در یک حلقه برای var این تابع به تعداد ابجکتهای موجود در var صدا بزنید. امیدوارم رسونده باشم مطلب را

لطفا مثال بزنید.

davoodrm666_666
شنبه 29 بهمن 1390, 07:56 صبح
var q = from s in i
viewPacket select new
{
ID = i[0].Substring(i[0].IndexOf('=') + 2),
Name = i[1].Substring(i[1].IndexOf('=') + 2),
No = i[2].Substring(i[2].IndexOf('=') + 2),
Type = i[3].Substring(i[3].IndexOf('=') + 2),
Count = i[4].Substring(i[4].IndexOf('=') + 2)
};

hojati
چهارشنبه 10 اسفند 1390, 22:19 عصر
منم یه مشکلی دارم تو linq to xml میخام جواب بدست اومده رو به رشته تبدیل کنم و داخل یک textbox بریزم ولی نمیشه و محتوای خود متغییر نشون نمیده

var p = from a in xd.Descendants("person") select new { a.Element("ax").Value };

textBox1.Text = p.ToString();

mehdi.mousavi
پنج شنبه 11 اسفند 1390, 15:54 عصر
منم یه مشکلی دارم تو linq to xml میخام جواب بدست اومده رو به رشته تبدیل کنم و داخل یک textbox بریزم ولی نمیشه و محتوای خود متغییر نشون نمیده

var p = from a in xd.Descendants("person") select new { a.Element("ax").Value };

textBox1.Text = p.ToString();


سلام.
بدین شکل عمل کنید:

var p = (from a in doc.Descendants("person")
select new { a.Element("ax").Value }).SingleOrDefault();

textBox1.Text = p.Value;

موفق باشید.