ورود

View Full Version : سوال: casting



itloveh
چهارشنبه 28 خرداد 1393, 18:37 عصر
با سلام ،دوستان عزیز این خطا به چطور رفع می شود این کد
var ID = db.mains.Select(p => p.idmain);

myid =Convert.ToInt32(ID);

myid از نوع int تعریف شده است.
اینم خطا

System.InvalidCastException: Unable to cast object of type 'System.Data.Linq.DataQuery`1[System.Int32]' to type 'System.IConvertible'.

aroshanzamir
چهارشنبه 28 خرداد 1393, 23:36 عصر
سلام دوست من :

باید این خطا را بده خروجی یک IEnumerable<int> است چطوری باید این IEnumerable را به int تبدیل کنه .. خوب نمیشه دیگه ...

مثال می زنم :
شما یک کلاس Student داری باید این مشخصات :

public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public string Family { get; set; }
public bool Status { get; set; }
}



چون دیتابیس نداریم یک لست درست می کنم و اطلاعات را بهش بایند می کنم :
لیست با مقادیر فرضی :

List<Student> Lst = new List<Student>()
{
new Student{ Id=1 , Name="Abolfazl", Family="RoshanZamir", Status=true},
new Student{ Id=2 , Name="Reza" , Family="Mohammadi" , Status=false},
new Student{ Id=3, Name="ANDY" , Family="Madadian", Status=true}
};



خوب با این حال :

IEnumerable<int> result = Lst.Select(x => x.Id);


foreach (var item in result)
{
Response.Write(item.ToString());
}



خروجی
1
2
3
می باشد .... =پس یک IEnumerable را نمی توانیم به بک متغیر عددی Cast کنیم

راه حل :

مثلا شما رکوردی با Id .. 3 را می خواهی :



int Id = Lst.Where(x => x.Id == 3).Select(x => x.Id).FirstOrDefault();


Response.Write("<br />" + Id + "");