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 + "");
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.