PDA

View Full Version : سوال: انتقال مقادیر دیتاتیبل به list<>



hercool
دوشنبه 21 مرداد 1392, 19:52 عصر
سلام دوستان
یه سوال دارم چطور می تونم مقادیر دیتاتیبل رو بریزم داخل list
می تونم مقادیر رو بریزم داخل listbox به این طریق
int i;
for (i = 0; i < dt.Rows.Count; i++)
{
listBox1.Items.Add(dt.Rows[i][0] + "" + dt.Rows[i][1]);
name.Add(dt.Rows[i][0].ToString());
MessageBox.Show("" + name);
}
اما داخل لیست نمی تونم کد های سایت های دیگه رو هم چک کردم اما راه به جایی نبردم برای مثال
کلاسی با این نام ساختم
public class Category
{
private int _Id;
public int Id
{
get { return _Id; }
set { _Id = value; }
}

private string _Name = null;
public string Name
{
get { return _Name; }
set { _Name = value; }
}

public Category()
{ }

}
بعد از این کد استفاده کردم اما نشد
public static List<Category> GetCategories()
{
List<Category> currentCategories = new List<Category>();

SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlDataAdapter ada = new SqlDataAdapter("SELECT inname,incode FROM dbo.industry ", con);
DataTable dt = new DataTable();

foreach (DataRow row in dt.Rows)
{
Category cat = new Category();
cat.Id = int.Parse(row["incode"].ToString());
cat.Name = row["inname"].ToString();
currentCategories.Add(cat);
}

return currentCategories;
}

plus
دوشنبه 21 مرداد 1392, 20:03 عصر
توی کد آخری، DataTable خالیه و تعداد سطرهاش صفره.

hercool
دوشنبه 21 مرداد 1392, 20:15 عصر
اره بخاطر اینکه این رو یادم رفت تو کد ها اینجا بزارم
ada.Fill(dt);
اما با این حال جواب ندادبازم صفره

hercool
دوشنبه 21 مرداد 1392, 20:24 عصر
این کد رو هم گذاشتم اما بازم جواب نداد

SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlDataAdapter ada = new SqlDataAdapter("SELECT inname,incode FROM dbo.industry ", con);
DataTable dt = new DataTable();
ada.Fill(dt);
//////
List<card> target = dt.AsEnumerable()

.Select(row => new card
{
// assuming column 0's type is Nullable<long>
cod = row.Field<int>("incode"),
name = row.Field<string>("inname")
}).ToList();
MessageBox.Show("" + target);

مهرداد صفا
دوشنبه 21 مرداد 1392, 20:25 عصر
با سلام.
اگر فقط دو فیلد دارید، از هر ردیف، دو فیلد را به رشته تبدیل کرده جمع کنید و حاصل را به لیست تبدیل کنید. تقریبا به این صورت:

list<string> result=(from row in table.Rows.Cast<DataRow>() select row[0].ToString() + "," + row[1].ToString()).ToList();

hercool
دوشنبه 21 مرداد 1392, 20:39 عصر
ممنون مهرداد نه فیلد ها فرق می کنن یکی int هست یکی هم string
من کد رو به این شکل دراوردم بازم اتفاقی نیافتاد
SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlDataAdapter ada = new SqlDataAdapter("SELECT inname,incode FROM dbo.industry ", con);
DataTable dt = new DataTable();
ada.Fill(dt);
List<string> result = new List<string>();

result = (from row in dt.Rows.Cast<DataRow>() select row[0].ToString()).ToList();
MessageBox.Show("" + result);

مهرداد صفا
دوشنبه 21 مرداد 1392, 21:02 عصر
ممنون مهرداد نه فیلد ها فرق می کنن یکی int هست یکی هم string
من کد رو به این شکل دراوردم بازم اتفاقی نیافتاد
SqlConnection con = new SqlConnection("Data Source=MASOUD\\SQLEXPRESS;Initial Catalog=bourse;Integrated Security=True");
SqlDataAdapter ada = new SqlDataAdapter("SELECT inname,incode FROM dbo.industry ", con);
DataTable dt = new DataTable();
ada.Fill(dt);
List<string> result = new List<string>();

result = (from row in dt.Rows.Cast<DataRow>() select row[0].ToString()).ToList();
MessageBox.Show("" + result);

خواهش می کنم. مشکلی نداره. دو خط آخر به این صورت تغییر پیدا می کند:

result = (from row in dt.Rows.Cast<DataRow>() select row[0].ToString()+" "+row[1].ToString()).ToList();
MessageBox.Show("" + result[0]);

مهرداد صفا
دوشنبه 21 مرداد 1392, 21:08 عصر
البته به روش زیر هم می توانید عمل کنید:

var MyList=(from row in Table.Rows<DataRow>() select new {Id=row[0].ToString(),Name= row[1].ToString()}).ToList();
MessageBox.Show(MyList[1].Name);